c语言中a+++++b应该怎么理解?

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-08-01
c语言中:a=1,b=2,a+++++b的结果是什么,如何理解?

唯一能拆开的有意义的方式是 (a++)+(++b),如果这样的话应该是4 但不保证所有编译器都认识你这样的写法。 建议加上括号,让你的代码更容易被人理解。

你只要搞清楚for循环3个语句的含义应该就懂了。
第一个是初始化,第二个是条件语句,第三个是自处理语句;
循环时第一个语句只使用一次,然后判断是否满足第二个语句,满足则进入循环体运行a+=i,然后i自加1,再判断是否满足第二个语句,满足则进入循环体运行a+=i,一直到i不满足i<10了,循环跳出。
开始时,i=0,开始循环。假设a初始化为0,
第一步:a+=i;然后i++,a=0,i变成1,1<10,继续循环;
第二步:a+=i;然后i++,a=1,i变成2,2<10,继续循环;
一直循环。
第九步:a+=i;然后i++,a=36,i变成9,9<10,继续循环;
第十步:a+=i;然后i++,a=45,i变成10,10<10不成立,循环结束。
根据具体问题类型,进行步骤拆解/原因原理分析/内容拓展等。具体步骤如下:/导致这种情况的原因主要是……

a+++++b,应该理解成:(a++) + (++b)。

这涉及到“左值”的问题。转一段“百度百科”里关于左值的说明:

左值(lvalue) 是B语言/C语言/C++语言等类C语言中的一类表达式。“左”(left)的原意是指可以放在赋值符号“=”的左边,但其实也表示能作为&和++等操作符的操作数(B语言中已经如此)。而且,现代C/C++中的含义已经不局限于此。lvalue的l被重新解释为location。这也对应于ISO C11/ISO C++11的内存位置(memory location)。


总结:a存在左值,可以有表达式:a++。但是(a++)不存在左值,无法继续执行(a++)++操作。



(a++)+(++b)
= a + (b+1)

注意区分a++和++a

a++先用a的值赋值之后再进行++操作

++a是先++之后在进行赋值操作


如上图:

a = 2; ---> a++;   // a = 2
b = 3; ---> ++b;   // b = 4


a+++++b在编译时会报错,(a++)+(++b)和a++ + ++b不会报错

“a+++++b”这一段根本就无法解析,编译系统从左至右扫描整条语句,先遇到a++,判断出来是一个a的后缀自加运算,然后接着扫描,遇到一个+,+是一个二目运算符,它的左边已经有一个运算数a++了,系统就向右搜索第二个运算数,又遇到一个+,++比+的运算级别要高,这时,编译系统就将两个+看成一个整体来处理,既然是++,编译系统就认定,肯定它的左边或右边有一个变量,编译系统先搜索左边,发现++,不是变量,再搜索右边,发现+b,+b是什么东西?编译系统是无法搞明白的,因此它就认为++是一个缺少左值的自增运算符,于是提示提示用户:’++’ needs l-value

另外,假如定义int a = 1,b = 2;

c = a++ + ++b;

1:先执行b自加,b变为3;相当于:b = b+ 1;
2:求a与b之和,赋给c;相当于:c = a + b ;//c = 1+3;
3:执行第二步之后,a自加1:a++;
4:如果要输出的话,(按执行顺序)
b = 3;
c = 4;
a = 2;

(a++)+(++b)

  • b a是什么意思c语言
    答:在C语言中,b和a是两个变量名,它们只是一个表示标识符的符号而已,并没有具体的含义。通常来说,变量名是由字母、数字和下划线组成,这些字符可以组成各种各样的标识符,用于表示程序中的各种数据结构和函数名称。在程序中,我们可以通过定义变量来给b和a赋值,并且可以在程序中对它们进行各种数学和逻辑...
  • C语言中a|b是什么意思?
    答:这是一个逻辑判断,含义是(a 不为0并且b+c不为0)或者b-c不为0,那么就是真,操作方法如下:1、首先打开devc++编辑器,定义两个变量a和b并赋值。2、第一个关系运算符符大于号(>)。3、第二个关系运算符大于等于(>=)。4、第三个运算符小于(<)。5、第四个运算符小于等于(<=),第...
  • 刚学C语言,求解答。 A、B是怎么回事
    答:A,B 用到的是指针,指针即地址。刚学你不用太在意,不过后面要重点看。指针是C的精华所在
  • a:b在c语言中是什么意思?
    答:A++是A先参与表达式的计算,后执行自加1.比如:int a,b;a=1;//如果你想把a的值1,付给b.那么,但你又想使得a加1。你就可以这么做 b=a++;//++在a之后,先把a的值付给b,然后再本身加1 。这时候b=1,a=2了。//如果你还不懂得话。b=a++;的意思 就是b=a;a=a+1;这两句意思 /...
  • a|b 在C语言中代表的意思是什么?是a与b求商还是其他的什么意思?_百度...
    答:位运算 按位或 0000 1001 1000 1000 用 | 得到 1000 1001
  • C语言中,输出a和b是什么意思啊
    答:代码如下:int a = 0;int b = 0;printf("a = ");scanf("%d", &a);printf("\n");printf("b = ");scanf("%d", &b);printf("\n");printf("a + b = %d", a+b);代码效果图:运行结果图:
  • c语言中的a/ b是什么意思?
    答:取模运算:a % p(或a mod p),表示a除以p的余数。比如给定一个正整数p,任意一个整数n,一定存在等式 :n = kp + r ;其中 k、r 是整数,且 0 ≤ r < p,则称 k 为 n 除以 p 的商,r 为 n 除以 p 的余数。取模运算的规则如下:1、(a + b) % p = (a % p + b %...
  • c语言中a||b是什么意思呢
    答:a和b的逻辑或。a表达式和b表达式只要有一个为逻辑1,则a||b的逻辑运算结果为逻辑1
  • C语言中a|b是什么意思?
    答:include<stdio.h> int main(){ unsigned int a=32,b=66;printf("a|b=%c\n",a|b);} 是b。。。楼主。。。b的ASCII码就是98.。。。结果就是98只不过输出的是ASCII码中ASCII码值为98的字符。。。
  • C语言中&是什么意思?a&b怎么理解?
    答:C语言中&是什么意思?a&b怎么理解? &在C语言中可能表示两种运算子。 如果运算物件只有一个,且为右运算元,那么&为取地址运算子,结果为操作物件的地址。例如&a(假设a是一个左值,即具有具体的可访问的地址)结果为a的地址。 如果运算物件有两个,那么&表示位与运算。结果中的每一个二进位制...