main(){ int a=1;printf("%d,%d,%d\n",a++,a++,a++);printf("%d\n",a);} 运行后的结果如下,你能明白吗?3,2,1 4 这个语句是明白了会明白C语言里面两个难懂的东西:printf("%d,%d,%d\n",a++,a++,a++);首先a++和++a是如何工作的:a++就是用a参与表达式的计算,然后把a+1...
include <iostream>using namespace std;int main(){int a = 5;int b = (++a) + (++a) + (++a);int a1 = 5;int b1 = (++a1) + (++a1);cout <<"a:"<< a << endl <<"(++a) + (++a) + (++a):" <<b << endl;cout << "a1:" << a1 << endl <<"(++a1)...
a=3时,因为a++是变量a先参与其他运算再加1,所以(a++)+(a++)+(a++)实际上是3+3+3=9,运算后a的值是6.++a则是先求a=a+1,然后再做其他运算,所以(++a)+(++a)+(++a)实际上是5+5+6=16,运算后a的值是6.
第一个++a=3+1=4,a=4 第二个++a=4+1=5,a=5 b=4+5=9 综上,a=5,b=9
执行++运算时 编译是从右到左进行的。b=(++a)+(++a);即先执行最右面的++a,得到a的结果为6.然后再计算第一个++a,此时的计算基础为6,得到结果为7.这时前后结果就是两个7相加。所以结果为14.这里要注意的就是要把a看成是一个主体。不要用6和7相加,要知道任意一步对a的操作都会影响a的...
include "stdio.h"int main(int argc,char *argv[]){int s,n,t;for(t=s=0,n=102;n<200;n+=3)//从102开始步长3增量保证n能被3整除if(n%4){//考察是否能被4整除printf(++t%10 ? "%4d" : "%4d\n",n);//输出不能被4整除的数s+=n;//向s累加求和}if(t%10)printf("\n"...
--a:++b; 三目运算符,先判断条件(--a==b++)得到的结果成立,最终得到结果a=2,b=3,其中a减1后被赋值了,b先被赋值为2,比较结束后b再加1,这个你应该能够懂是++、--的运行规则,得到结果后成立的运行,不成立的不运行,本题是运行--a,不运行++b。三目运算符右结合的情况时,再有两...
b=(a+a)+(++a), 第二次脱括号的结果. 这时a=2 b=(2+2)+(++a),b=4+(++a) 第三次脱括号的结果, 这时a=2 b=4+a 第四次脱括号的结果, 这时a=3 b=4+3=7 C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能...
有注释:include<stdio.h>main(){ int a=3,b=2,c=1; c-=++b;/*-2*/ b*=a+c;/*3*/{ int b=5,c=12; c/=b*2;/*1*/ a-=c;/*2*/ printf("%d,%d,%d\n",a,b,c); a+=--c;/*2*/}printf("%d,%d,%d\n",a,b,c);}结果:2,5,1 ...
所以b=3*5;用事实来证明一切吧!using System;namespace ConsoleDemo { class Class1 { [STAThread]static void Main(string[] args){ int a=3;int b;b=a++*++a;Console.WriteLine(b);} } } 运行结果是b=15 上面是用C#做的,下面用Java做结果还是b=15 class Demo { public static void...