为什么k++先++后再i+=k,这其中有什么隐藏特性吗?难道这样写是K++;i+=k;的意思吗?
嗨,你的问题就是基本的逗号运算符。。。。
你只要记住两点:
for (int i = 2, j = i; ;) {
}
这里是先定义了i为2,接着是j被赋值为i,j 也变成了2
再例如,
for (int i = 2, j = (5, i++, 10); ;) {
}
j 的赋值有一系列的逗号运算,其实j 的最后结果为最右边,即 j = 10
如果有什么其他问题,随时欢迎交流~~~
逗号运算符,按顺序运算,结果是最后一个表达式的值
如果用了分号,则for语句格式错误。
int a;
int b;
a = 3;
b=++a,4-2,a+5; //优先级
printf("b1= %d\n",b); // b=++a=4;
a = 3; //a值重新赋回来
b=(++a,4-2,a+5); //结合性
printf("b2= %d\n",b); // b=((++a)+5)=9;
return 0;
第一个b,后面赋值表达式中,自加“++”的优先级高于,逗号的优先级,所以给b赋值为++a 为4 。
第二个b,后面有带括号的逗号运算符,所以要自左至右的计算各个表达式的值,但是赋值给b的值,是整个逗号表达式的值,即为最后一个表达式的值a+5,为b=((++a)+5)=9。
供参考:https://baike.baidu.com/item/%E9%80%97%E5%8F%B7%E8%A1%A8%E8%BE%BE%E5%BC%8F/4496335