关于c语言中的a++ ,++b的运算

供稿:hz-xin.com     日期:2025-01-15
c语言基本运算符问题 *a++ = *b++



*a++=*b++;这里,++与* 号的优先级都比等号高,等他们都执行完,9=6,是这个东西,这是什么意思?
注意:++与*是同一级运算符,结合方向有运算方向决定,不是你讲的++优先*号,

呵呵,想来是这里的问题。你看图片,比较哈就知道了。
高手指教,相互学习。

这涉及到运算符的优先级问题,因为*=优先级比+高,而()优先级较*=高,故先算(a+b)=8,之后x*=8,再进行x=x*8,最后x=10*8=80。
建议:既然你学了C语言,运算符当然不能不懂,特别优先级和结合性,努力吧!!!

楼上举出了一个错误的例子。(a++)+(a++)这个例子是错误的。C语言规定,在相邻的运算中不能连续多次改变同一个变量的值,上面的式子显然不符合这一点。当然,我并不是说上面的式子编译不通过,而是说上面的式子是ANSI标准中定义为不合法的形式。这个式子在C语言标准中没有给出标准的运算法则,但是在语法上又没有错误,因此不同的编译器会进行不同的解释,其结果也就不一样。我给出两种编译器的解释,假设a的初始值为1。1、(a++)+(a++)=3 理由 编译器会认为第一次(a++)为1,第二次(a++)为2,因此结果为3。2、(a++)+(a++)=4 理由 有些编译器会认为这是两个相同变量相加,于是就会取第二个a++的值作为变量值,也就是先执行两次a++将第二次的值(2)作为编译器所认为的相同变量的值,也就是2+2,因此结果为4。因此,像这种同一个变量连续自增的表达式是不符合规范的,也是标准程序开发中不可用的(在这里鄙视一下谭浩强的书)。 下面我来简单解释一下自增运算。首先在C语言里有一个概念,那就是“表达式的值”。在大多数情况下,按照运算优先级进行的运算结果就是表达式的值。有个很明显的特例,那便是后置自增运算。将a++看作一个表达式,那么a++的表达式的值就是1(假定a的初始值为1),而a=2再比如1<2这个表达,表达式的值为非0(一般说法是1,但是C语言对“真”的表述为非0)。因此,要理解C语言中表达式的值和变量的计算结果就会理解自增运算了。从编译原理角度来说这是由于堆栈的特点导致的,如果你将来会对C语言进行深入的学习会理解的

对于前置++ 和 后置++ 最基本的理解就是你那样的。所以(a++) + (++b) = 1 + 3 = 4a++这个表达式的结果就是a;而++b表达式的结果是b+1.

你说的是对的

++a || ++b && ++c在C语言中怎么计算?
首先,要知道C语言的运算符优先级,其中,++ 和 -- 的优先级是高于 || 和 && 的,所以 ++a 和 ++b 会先进行计算。然后,要知道 C 语言中的逻辑运算符的短路原则,即在逻辑运算中,左边的表达式如果已经能确定结果,那么右边的表达式就不会再计算了。所以,在这个表达式中,++a 会先计算,如果...

C语言逻辑运算符顺序
逻辑运算符有三种,分别为&&(与运算)||(或运算)!(非运算),三者的优先级顺序为!>&&>||。PS.1、与运算符(&&)和或运算符(||)均为双目运算符。具有左结合性。非运算符(!)为单目运算符,具有右结合性。2、“&&”和“||”优先级低于关系运算符,“!”优先级高于算术运算符。

C语言里a+++b+++c等于多少?
在 C 语言中,表达式的计算顺序是由运算符的优先级和结合性决定的。具体来说,当一个表达式中有多个相同优先级的运算符时,计算的顺序是从左到右的。而对于 a++ 和 ++b 这样的自增运算符,它们的优先级比大部分其他运算符都要高。在这个表达式 a+++b+++c 中,可以将它拆分成三部分,即 a++...

c语言中,a+(b++),会先计算b++再计算a+b么?
不是,b++是先算后加,++B是先加后算,a+(b++)就等同于:a+b,b+1.

在二级c语言中5+++5+++5++是怎样运算的?
A++,++A 求a+++b+++c++ ++在A前是先+1在+B ++在A后则是先+上B ,A再+上1(就是在运算后在加上一) 答案应该是15 A,B,C应该是6,6,6

c语言 a++&&++b什么意思
这是一个逻辑语句,a++&&++b就是如果a和b+1后都是true(就是非0),则结果为1,否则为0。a++是先判断后再加1,而++b则是先加1再判断

二级C语言 a=b=c=1 if(a++||++b) c++; 以上是如何运行的,如何判断的...
1、a=b=c=1 2、执行if(a++||++b),||的意思是或,就是括号里的任意一个条件满足的话都认定statement为true。当检查到a++时发现a!=0,所以这个statement为true,只执行到a++,无视后面++b,这时a=2,b=1。3、因为if里的statement是true,所以执行下面的语句,c++,执行完后c=2,最后结果a...

C语言中,求解表达式a+=a++||b++中a=7,b=7为什么啊 怎么想的啊
短路运算 因为 || 是或运算 a++!=0 表达式就会为1 也就是说 a++执行完后面 b++不执行了 a=8 8+1=9 所以a=9,b=7 所以不可能两个都是 7 7 不运行结果也是这样的

c语言中:++a+c+++b是如何结合的
main(){ int a=0,b=0,c=0,d;d=++a+c+++b;printf("%d %d %d %d",a,b,c,d);} 输出的结果 1 0 1 1 所以显然是: 第一步:做++a; 在turbo C中前缀单目运算优先于后缀 第二步 取单目运算的结果做表达式运算对象:1(a) 0(c)第三步 做 c++ 第四步 做表达式计算 1+...

C语言中:a+++b是什么意思
就近原则,与编译器无关。要说在c语言中这充其量只能算作是“伪代码”。在vb、pascal等程序设计语言中,<>是“不等于”的意思。在c中,“不等于”的关系应表示为“!=”if(a != b+c)printf("a不等于b+c\\n");else printf("a等于b+c\\n");...