作业帮 > 综合 > 作业

int a = 8 ,b = 4 ; int expr = a++ % ++b * 2 ;为什么答案是6,急

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/13 15:01:31
int a = 8 ,b = 4 ; int expr = a++ % ++b * 2 ;为什么答案是6,急
实际运算顺序:( a%(++b) )*2=6
值的处理:8%5*2=6
符号的优先级依次是
第一级别:前置++
第二级别:求余,乘法
第三级别:加法
第四节别:= 等于
第五个级别:后置++
前置++在执行语句前进行+1操作,后置++在执行语句(除了运算还有赋值操作)完了,才执行+1操作,具体是在整个算式运算完后进行赋值操作的时候才进行+1操作
你可以自己试一试,输出的就是一个8,一个9.
int b=a++ ; 这个时候++操作还没来得及执行,就赋值给b了,赋完值然后才+1.
等到下一次赋值的时候就给了c
#include "stdafx.h"
#include "stdio.h"
int _tmain(int argc,_TCHAR* argv[])
{
int a=8;
int b=a++ ;
int c=a;
printf("%d",b);
printf("%d",c);
getchar();
return 0;
}
其实最核心的是,i++是赋完值才+1,还没等值++完,赋值操作(=)就抢着先进行了.