在C语言中(i++)+(i++)+(i++)和(++i)+(++i)+(++i) 有什么区别啊?急救

ls的回答有误。这个的结果还是要看编译器的。
int i=5, j=5;
int p=(i++)+(i++)+(i++);
int q=(++j)+(++j)+(++j);
printf("%d %d", p, q);
上面这段代码,在vc,dev c++下结果是15 22,tc下是15 24
计算结果取决于各编译器进栈出栈的顺序。
这类代码移植性很差,需要尽量避免,也没有任何意义分析这样的运算顺序。

楼上的解释很好,不过呢……实际用起来没什么区别,都是随机结果,取决于编译器,因为楼上的解释只在++(或者--)连续出现小于3次的时候适用,当++连续出现3次以上,就取决于编译器了。

1 加入括号后,括号内的一律先运算
那么 (i++)+(i++)+(i++)和(++i)+(++i)+(++i) 就是一样的

2 q=(++j)+(++j)+(++j)
根据括号优先级最高,所以它计算的q的结果和 q=(j+1)+(j+1)+(j+1) 的结果一样是24

要看编译器,赞LS的精神

说得都不错,但我建议写程序时没必要这么写吧,把它分开写不就没事了

在C语言中(i++)+(i++)+(i++)和(++i)+(++i)+(++i) 有什么区别啊?急救~

1
加入括号后,括号内的一律先运算
那么
(i++)+(i++)+(i++)和(++i)+(++i)+(++i)
就是一样的
2
q=(++j)+(++j)+(++j)
根据括号优先级最高,所以它计算的q的结果和
q=(j+1)+(j+1)+(j+1)
的结果一样是24

在C语言中,i+=1的原型就是i=i+1,所以i+=1相当于就是i=i+1的简写。不管C语言结构、算法是否复杂基本上都能看到这样的简写,但是否要简写还是看个人的习惯。

扩展资料:
C语言中的其他简写形式:
1、a+=b →a=a+b
2、a-=b →a=a-b 3、a*=b →a=a*b
4、a/=b →a=a/b 5、a%=b →a=a MOD b 即a/b的余数
6、a&=b →a=a &b 按位与
7、a^=b →a=a EOR b 按位异或
8、a||=b →a=a || b 按位或

#18572948025# 急! C语言中,i++和++i的区别是什么 ? - ******
#成肾# i++和++i的区别一个是变量的值先进行运算再对i进行加1,后者是先把变量i加1再把新的i值进行运算. 比如初始i=3,,现在有n=i++;则n的值为3,而这个语句执行后i=4若n=++i则,则运算后n=i=4

#18572948025# 在C语言中I++与++I的区别? ******
#成肾# 例如 i=5; printf("%d",i++); 你既然知道i++是先取值那么,printf这个函数当然取的是i=5的时候的值咯. 相反的 i=5; printf("%d",++i) 则是先自加后,再把i的值取出来,printf所取的i值当然就是6咯

#18572948025# ++之惑:C语言中++i和i++的区别? ******
#成肾# ++i是现加一再用而i++是现用再加一;如i=2;j=++i,k=i+;则j=3,k=2;相同的是经过变化后i都为三;(我们也正在学这呵呵)

#18572948025# 计算机C语言中,关于i++,和++i怎么用啊??我总是搞不明白 - ******
#成肾# 语言里是这样的: 1.后置运算:k++表示先运算,后自加. 意思是遇到k++了,我先把当前的k的值拿来参加运算,后面再去管它的自加. 那么,【“后面”后到什么程度呢?要后到当前的语句执行完,即遇到分号;表示 语句执行完了,所以k才自加1.】 如:int k=5,b=0; b=k++;的意思就是,先算b=k(即b=5),遇到分号;表示语句结束,k才自加1,即k变为6.2.前置运算:++k表示先自加,后运算 这个意思就是遇到++k了,先把k的值加了1,再往后执行别的. 如:int k=5,b=0; b=++k;的意思就是,先把k自加1,即k为6,再算b=k(即b=6).掌握好这两点,k--和--k也是一样的道理.

#18572948025# C语言关于i++与++i - ******
#成肾# 压栈顺序和求值顺序是2个概念, C语言没有规定压栈顺序, C语言也没有规定参数的求值顺序, 编译器自己发挥. 但是规定了在实际调用前存在一个序列点. 具体到这个问题, 参数在压栈前被求值, 但是具体先求 哪个参数就不一定了, 可以正着求可以反着求也可以跳着 求, 而且因为逗号之间不存在序列点, 那么4个i是在什么 时刻自加也是不一定的, C语言能保证的只是当函数被实 际调用时, 4个i的所有自加运算完成. 这也符合C99"在相邻序列点之间的同一对象最多只能被修 改1次"之规定. 所以你的问题无统一解,以后要避免这种摸棱两可的写法. ps: 这里指的副作用就是i的自加动作.

#18572948025# i++和++i的区别 - ******
#成肾# 简单地说,都是I自加1.区别是,I++是执行完后面的语句才加1;而++I就先做I+1才执行后面的语句一直以来,++ --语法浪费了太多人的时间.说句实在话,++ -- 在C语言中其实是一个很细节的语法,除了表达简练外,真的没有什么其它的好处...

#18572948025# 请问C语言中i++和++i有什么不同?呀详细通俗的解释,不要教材上的原话.学了C语言可以开发出像QQ这样的... ******
#成肾# 这里我们先讲 i++ 不要记教材上的东西..始终记得,++在后,比如在赋值过程中 j = i++; 那么执行语句的流程是j = i; i = i + 1;也就是说先使用再自加. 如果 ++ 在 前,那么过程是相反的.那就是先自加再使用.比如 j = ++i; 先自加是 i=i+1; ...

#18572948025# C语言中i++与++i的区别 ******
#成肾# i++ 是先使用变量的值,后加1; ++i 是先自加1,然后使用变量的值. 本例中: str[j++]=str[i]; 相当于:先赋值,后自加. str[j]=str[i]; j++;

#18572948025# C语言中++i与i++的区别 - ******
#成肾# 一直以来,++ --语法浪费了太多人的时间.说句实在话,++ -- 在C语言中其实是一个很细节的语法,除了表达简练外,真的没有什么其它的好处了. 由于中国的C语言教程长期以来被谭浩强主宰,而谭又错误的把++ --作为一个C语言重点来教,...

#18572948025# c语言中i++,++i的运算 - ******
#成肾# 考点一:++i和i++的区别 ++i先进行自增再参加运算 i++先参加运算,再自增 考点二: 整数相除取整 分解掉 Y = Y+ Z/(X+1); Z = Z-1; y = 2+3/2 = 2+1 = 3 所以y等于3 你前面肯定要声明类型的,不然编译通不过,如果是题目的话,那就是题目出的不完善

  • 在C语言中,若i=1,那么(++i)+(++i)+(++i)等于多少?麻烦给个详细的说明...
  • 答:再曾i值, 1+1+1=3,i=4;如DEV-C VC这些编译器, 结果是:3+3+4=10;所以一般程序是不出现你问的这个语句的。一般是 a=++i;b=++i;c=++i; 然后a+b+c;总之,语法没定义,看编译器 ...

  • c语言中的++ i和i++有什么区别呢?
  • 答:在C语言中,`++i` 和 `i++` 都是自增操作,但它们在执行时有一些微妙的区别。1. `++i`:这被称为前缀递增操作符,它表示先将变量增加1,然后再使用变量的值。也就是说,变量会在表达式中被使用前就已经加了1。...

  • c语言中++i是什么意思?
  • 答:++i是使用i之前先使i加一。i++是使用i之后再加一。如果不能理解,那么可以理解为:++i是先计算,再操作,i++是先操作,再计算。C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的...

  • c语言中i++和++ i区别在哪里
  • 答:i++和++i是C语言运算符,i++是后缀递增的意思,++i是前缀递增的意思。1、i++是后缀递增的意思,i++是先进行表达式运算,再进行自增运算。把i++的运算过程拆分开,等效于i=i+1可以看到运算结果是一致的。x = i ...

  • 在c语言中,int I,I╱=2是啥意思
  • 答:这个写法有问题。应该如下写法:void main( ){ int I ;scanf("%d", &I ) ;I /= 2 ; /* I /= 2 等价于 I = I/2。/ 和 = 之间不能够有空格。另外,你的 /= 都是全角汉字符号,是错误的 */ printf(...

  • 在c语言中的for循环中怎样设定i的初值
  • 答:亲,你的问题太笼统了,没有具体的格式,只能根据需要 例如让你求1+2+3+~~~100的和:循环变量从1开始,然后每次求和的时候正好与循环变量有关系所以:s=0 for(i=1;i<=100;i++)s=s+i;当然你也可以这样:s=1;...

  • c语言中++ i的用法是什么啊?
  • 答:++i 的效率更高;i++ (在C++中) 在实现的时候,系统会产生一个 local object class INT的临时变量 用于存储原有的数据供返回值用。数据分析 1、在不考虑编译器优化的条件下,前缀(++i)比后缀(i++)要少一步开辟...

  • 在C语言中的p=(i++)+(i++)+(i++)和java中的p=(i++)+(i++)+(i++)的...
  • 答:应当一样。i++ 是后加加,在表达式里 不自增,出了表达式再自增。(i++) 有小括号,计算优先,所以计算式等于:(1)p=(i)+(i)+(i);(2)i = i + 1;语句没有2义性,无论优化不优化,也无2义性。我没有...

  • C语言中,s是数组,s+i和s[i]有什么区别?
  • 答:C语言中C[S[i]]++是什么意思?C数组中的第S[i]下标的值自加;例如:int S[5]={1,2,3,4,5};int C[5]={1,2,3,4,5};int i=2;S[i]=3; //S数组里下标为2的值为3 C[S[i]]=4 //C数组里下标...

  • c语言中,i=1,(++i)+(++i)+(++i)=?
  • 答:先说明一下:++i的意思可分解成以下两步:i=i+1,i再参与运算 上面的表达式运算过程:(同级运算从左到右,有括号先算括号)一、先运行第一个++i, i的结果是2 二、再运行第二个++i, i的结果是3 三、计算前两式...

    为传递更多家电数码信息,若有事情请联系
    数码大全网