作业帮 > 综合 > 作业

关于C语言中优先级及括号的问题

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/04/25 17:59:18
关于C语言中优先级及括号的问题
#include
int main(void)
{
int a = 1;
int b = 10;
a = a + b - (b = a);
printf("a = %d\nb = %d\n",a,b);
return 0;
}
这样能实现2个数的交换,那么在语句a = a + b - (b = a)这个语句中执行顺序该怎么解释?
是先执行(b = a)这句话吗?如果是先执行这句的话,根本不能实现交换啊?还是说a = a + b - (b = a)是从左往右执行,遇到括号了再执行括号里面的?
在带有括号的表达式里面到底是先计算括号里面的表达式还是从左往右顺序执行,遇到括号了再执行括号里面的啊
关于C语言中优先级及括号的问题
第一,不要用这种方法实现两数的交换,这种做法根本没有考虑溢出的问题
第二,a = a + b - (b = a),这个表达式本身就是一个错误的表达式,变量的值依赖于确定的求值顺序,而C本身没有强制规定表达式求值顺序,这是一个不确定的行为
再问: 溢出的问题我知道,只是比较好奇这种做法,如果这是不确定行为,是不是就意味着不同的编译器有不同的执行顺序啊??
再答: 是