C语言++操作符的结合性
记得以前学C的时候老喜欢考 ++ 操作符,公司笔试面试题也出现过
在此提供一些题:我个人的理解放在最后
A : int main(){ int c=4; int b; b= (++c) + (c++) + (c++) ; printf("b= %d ",b); return 0;} //运行结果是15,
B:int main(){ int c=4; int b; b= (c++) + (++c) + (c++) ; printf("b= %d ",b); return 0;} //运行结果是15,
C:int main(){ int c=4; int b; b= (c++) + (c++) + (++c); printf("b= %d ",b); return 0;} //运行结果是13,
D;int main(){ int c=4; int b; b= (c++) + (++c) + (c++) + (c++) ;
printf("b= %d ",b); return 0;} //运行结果是20,
E:int main(){ int c=4; int b; b= (c++) + (c++) + (++c) + (c++) ; printf("b= %d ",b); return 0;} //运行结果是18,
理解:
1. ++在前的意思是“先加后用”,这里蕴含的意思是说,只要遇到++在前那么马上将内存中的变量加一,++在后的意思是”先用后加“这个“后加”的意思是语句结束(分号为语句结束)后才加,没结束 是内存中还是保存原来的值.
2.还有加号是二元操作符,两个操作数算做一个运算,且是从左到右结合的(等号是从右至左)。
于是:
int c=4;
int b; b= (c++) + (++c) + (c++) ;// 5 + 5 + 5 。第一个是5是因为第二个操作数运行后,内存中的c已经变为5了.
答案便是15了

浙公网安备 33010602011771号