运算符结合的优先关系
#include <stdio.h>int main(){
int a=1,b=1,c=-1;
printf("%d,%d",a+=a<b-c,a+=a-=a*=4);
return 0;
}
格式化输出这里的 a+=a<b-c 和 a+=a-=a*=4有点理不清运算顺序,有没有朋友帮忙解答下 这里有优先级的表格
对着表格不难看懂的
https://blog.csdn.net/u014100559/article/details/90764534?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160776041719724838575070%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=160776041719724838575070&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-1-90764534.pc_search_result_cache&utm_term=c%E8%AF%AD%E8%A8%80%E4%BC%98%E5%85%88%E7%BA%A7&spm=1018.2118.3001.4449 昨非 发表于 2020-12-12 16:07
这里有优先级的表格
对着表格不难看懂的
https://blog.csdn.net/u014100559/article/details/90764534?op ...
能说说这题的运算过程? 人随世俗变 发表于 2020-12-12 16:14
能说说这题的运算过程?
printf("%d,%d",( a += (a < (b - c))),( a +=( a -= (a *= 4)))); 昨非 发表于 2020-12-12 16:16
在计算( a += ( a < ( b - c ) ) ) ,是不是第一步 b-c = 2,第二步 a<2真为1第三步a+=1 结果为2 昨非 发表于 2020-12-12 16:16
如果单独运行 a+=a<b-c结果是等于2,但是这个表达式后面又有一个双目赋值的结合表达式,运行出来的结果就不一样了。所以我不太清楚,第一个表达式的a值会受到 第二个表达式的影响? 人随世俗变 发表于 2020-12-12 16:30
如果单独运行 a+=a
会的,a的值也是变化的
#include <stdio.h>
int main() {
int a = 1, b = 1, c = -1;
printf("%d\n", a);
printf("%d\n", (a += (a < (b - c))));//前一语句
printf("%d\n", a);
printf("%d\n", (a += (a -= (a *= 4))));//后一语句
printf("%d\n", a);
printf("%d,%d",( a += (a < (b - c))),( a +=( a -= (a *= 4))));
return 0;
}
结果:
1
2
2
0
0
1,0 昨非 发表于 2020-12-12 16:35
会的,a的值也是变化的
结果:
两个表达式分开我清楚了,但是一旦放在一句我就有点混乱,不清楚怎么个计算得出1的 人随世俗变 发表于 2020-12-12 16:44
两个表达式分开我清楚了,但是一旦放在一句我就有点混乱,不清楚怎么个计算得出1的
从右到左执行
执行后一语句时,得到a=0
在执行前一个的时候,
a=0,加一得1 昨非 发表于 2020-12-12 16:48
从右到左执行
执行后一语句时,得到a=0
在执行前一个的时候,
那么后一个最后的结果咋又成1了 人随世俗变 发表于 2020-12-12 16:59
那么后一个最后的结果咋又成1了
不是说了吗,a<b-c得值为true,
a=0,
0+true = 1 昨非 发表于 2020-12-12 17:02
不是说了吗,a
我是想说 printf("%d,%d",( a += (a < (b - c))),( a +=( a -= (a *= 4)))); 中的( a +=( a -= (a *= 4))) 怎么结果又变成1了 人随世俗变 发表于 2020-12-12 17:15
我是想说 printf("%d,%d",( a += (a < (b - c))),( a +=( a -= (a *= 4)))); 中的( a +=( a -= (a *= 4)) ...
第二个表达式结果是0啊 昨非 发表于 2020-12-12 17:17
第二个表达式结果是0啊
我这边运行出来结果是1,1
页:
[1]