int a = 8 ,b = 4 ; int expr = a++ % ++b * 2 ;为什么答案是6,急
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/08/19 04:42:34
int a = 8 ,b = 4 ; int expr = a++ % ++b * 2 ;为什么答案是6,急
![int a = 8 ,b = 4 ; int expr = a++ % ++b * 2 ;为什么答案是6,急](/uploads/image/z/20170144-64-4.jpg?t=int+a+%3D+8+%2Cb+%3D+4+%3B+int+expr+%3D+a%2B%2B+%25+%2B%2Bb+%2A+2+%3B%E4%B8%BA%E4%BB%80%E4%B9%88%E7%AD%94%E6%A1%88%E6%98%AF6%2C%E6%80%A5)
实际运算顺序:( 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,还没等值++完,赋值操作(=)就抢着先进行了.
值的处理: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,还没等值++完,赋值操作(=)就抢着先进行了.
#include int max(int a,int b,int c){\x05a=a>b?a :b ;\x05retu
#includeint a(int x);int b(int y);int main(){int m,n;n=6;m=a
int b=2;int fun(int*k) {b=*k=b;return (b);} main() {int a[10
有如下程序 int runc(int a,int b) { return(a+b);} main( ) { int x=
#include int func(int a,int b) { int c; c=a+b;return c; } ma
int b=7;float a=2.5,c=4.7;运算下列a+(int)(b/3*(int)(a+c)/2)%4答案为
main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int *b; b=a;
#include int f1(int a,int b)15,9 { int c; c=b%2; return a+c;
void func(int *a,int b[]){b[0]=*a+6;}main(){int a,b[5];a=0;b
int a,b; b = a >>
#include int b=3; int fun(int *a) { b+=*a; return(b); }
int a =3; int b=++((++a)--); 这样计算b的值为什么不对啊