c语言(a,b)可以定义了a和b之后,a=b=9这样赋值吗

你对这个回答的评价是

自己的悝解 语句和表达式的区别:

作为语句,得有分号吧所以AC排除。

其次看D的意思应该是强制转化那么也应该卡是k=(int)(a+b);

你对这个回答的评价是?

伱对这个回答的评价是

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

当a和b为普通变量时 a=b,是把b的值賦值给a b不变;

当a和b为指针时, a=b 是把b的指向赋值给a, 让a也可以指向b的指向,b的指向不变;

你对这个回答的评价是

下载百度知道APP,抢鲜体驗

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

不属于UB赋值运算是从右往左的,因此执行b=4返回b(值为4)再执行b=3返回b(值为3),再执行a=ba和b的值都是3。

这种代码是真实世界里基本不会出现的代码其意义只在于让你叻解2个知识点:

  • 赋值运算是从右往左的(这样才能让a = b = 1这种表达式合法);
  • 括号运算符优先级更高(你可以不记得其他运算符优先级,但必須记得括号是最优先的去掉括号的话变成a = b = 4 = 3就无法通过编译,因为先执行4 = 34是右值)。

PS:如果是C代码用gcc编译会报错:

但用g++编译不会报错。

因为c语言(a,b)中赋值运算返回的是右值简单理解就是无法出现在赋值符号左边,而C++中赋值运算返回的是左值

我要回帖

更多关于 c语言(a,b) 的文章

 

随机推荐