C语言a=1,++a*++a=?
前者,a=a+++1被编译器解释为:
a=a+1;//a=1+1=2
a++;//a=2+1=3
后者,a+++1被编译器解释为:
a+1;//虽然做了1+1=2运算,但没有赋给a,a仍为1
a=a+1;//a=1+1=2
a*=a++*++a 分解如下:
a*=++a*++a;
a=a*((a+1)*(a+1)) 把a的具体值代进去算就可以了。 因为开始等号右边的*号为最后的计算 所以CPU看到 a有两个数据 会把后一个数据赋给前一个a++数据(也就是后缀编程了前缀) 然后再进行 *号 计算。。
因为++操作符优先级大于*,先进行两个++运算,在进行*运算
等价于如下式子:
++a; //a=2
++a; //a=3
a*a; //3*3=9
个人认为等于四。
++是自增运算符,只能用于变量而不能用于常量和表达式。
++的意思是说A在运算之前就+上1了。所以++a=2所以最后的结果是4
9.
先做自加运算然后相乘。
两次自加运算后,a的值变为3.然后两个3相乘。
先 ++ 后相乘 操作符优先级的问题 。。个人感觉是4.。
确实是9
9
C语言中(++a)×(++a)等于多少,其中a等于4,求解
我刚用gcc跑了一下是36 C源代码:int main(){ int a=4;int b=(++a)*(++a);printf("%d",b);return 0;} 汇编码:call___main movl$4, 28(%esp)addl$1, 28(%esp)addl$1, 28(%esp)movl28(%esp), %eax imull28(%esp), %eax movl%eax, 24(%esp)...可以看出来是4加了两次1变...
int a=1 b=a++ + ++a
所以这个式子的结构就清晰了,b=a+a(此时的a是++a后的结果,是2),b=4。再看a自己本身的值,这个比较有趣,a经过了++a,变成了2,而a++改变的是内存中的a,不是临时变量,所以,此时的a=2+1=3。总结一下,后++是拷贝的a原本的值到临时变量temp里面,在本条语句中用的是temp值,而非a...
c语言(a++)+(a++)怎么算
这个问题我研究了一下。等价于 b= a+ a;a++ ,a++;所以b=6;a=5;a++ ,即为a,在赋值语句结束后a才加1.++a 是直接加1.为了加深理解:给你几个例子 a=1;b= (++a)+ (++a);结果b=6 a = 1;.b=(++a) + (++a)+(++a);结果b=10 自己理解一下。具体原因是计算机的累加...
c语言中,b=(++a)+(++a),a=1,b=6,为什么啊~~~
根据优先级,赋值给b是最后一步执行的。可以发现最后执行b=()+()时++a 的值已经是3了,因为++a 的作用就是在程序执行前进行a=a+1的操作。两个括号使得这个过程执行了两次,所以a加了2变成了3.两个3相加就是b的6!
C语言中x=(a++)*(++a)和x=(++a)*(a++)运算后是多少?
a++是语句结束后在后加,++a是先加后计算再语句结束 x=(a++)*(++a);只执行了++a,得出结果x=16后,即本条语句执行完了,再执行a++,得出 a=5 所以结果是一样的 如果是 x=(a++)*(a++)x=9,a=5 因为在本语句中a++没执行 x=9之后 才自加2次 a=5 x=(++a)*(++a)x=25,a=5 ...
c语言中a=1 b=(++a)+(++a)+(++a); b=10为什么???
5: a=1;00411428 mov dword ptr [ebp-4],1---把1存入dword ptr [ebp-4]缓存器中===(dword ptr [ebp-4]:1)6: b=(++a)+(++a)+(++a);0041142F mov eax,dword ptr [ebp-4]---把dword ptr [ebp-4]的1存入eax寄存器中===(eax:1)00411432 add eax,1...
c语言的问题 a = (++a)+(++a)+(++a)+(++a) 计算原理
++a是左值,它的值是累加了1之后的a,是【变量】。而a++则仅仅是一个【值】,这个值等于变量a的原始值。因此对于(++a)+(++a)+(++a),过程如下:先取第一个++a和第二个++a,以进行二元运算“+”此时,经过两次++,a的值变为3 因此计算结果为a+a=6,此时不再是变量,而是值6 然后再取...
C++中,a++、a+=1、a=a+1、++a 有什么区别?
a++:a先创建自身的一个副本,然后a自增1,最后返回副本的值 a+=1: 事实上相当于++a a=a+1: 虽然有点雷同于a+=1,但不同的是此时右值的a和1做相加操作,形成一个副本然后赋值给a,所以有额外操作 ++a:将a自增1并返回a 鉴于a++和++a的差别,C++Primer建议用++a作为for循环的递增量。以...
c语言中两个加号++是什么意思,++a,a++分别是什么意思
++ 是递增运算符,对于变量的作用相当于a = a + 1;a++ 和 ++a 的区别在于,作为表达式,前者返回a的原数值,后者返回a递增后的数值。例如,int a = 1,则a++为1,++a为2。但不管++在什么位置,运行结束之后a的值均为2。
C语言中的++a是什么意思,等于什么
下面回答是不正确的 这个叫做 自增语句,++a 就是使a 增加 1 相当于 a=a+1 a++ 也是一个道理。只不过 a++是后加 ++a a++ a=a+1 对于本身a 来讲是一样的 但是 b=++a 和 b=a++ b的值就不一样了,一个是先增加a 赋值给b 一个是先赋值给b 然后自身加1 ...