C语言可以连续赋值么?如c=a=b=5????说详细哦

另外mian前的void带与不带有什么区别?... 另外mian前的void带与不带有什么区别? 展开
 我来答
我爱学习112
高粉答主

2021-01-14 · 每个回答都超有意思的
知道大有可为答主
回答量:7259
采纳率:100%
帮助的人:160万
展开全部

可以连续赋值,编译器是从右往左赋值,c=a=b=5就按照b=5,a=b,c=a赋值main

前带void表示main函数返回类型为空类型

在较早的编译器下,main前面不带void也可,编译器会默认为void返回类型。

扩展资料

C语言的运算符主要用于构成表达式,同一个符号在不同的表达式中,其作用并不一致。下面按计算的优先顺序,分别说明不同作用的表达式。需要特别指出,在C语言标准中,并没有结合性的说法。

相同优先级运算符,从左至右依次运算。注意后缀运算优先级高于前缀。因此++i++应解释为++(i++)。

而与或非的运算优先级都不一样,因此a && b || b && c解释为(a && b) || (b && c)

合理使用优先级可以极大简化表达式。

amao4717
推荐于2018-05-11 · TA获得超过122个赞
知道小有建树答主
回答量:83
采纳率:0%
帮助的人:100万
展开全部
c=a=b=5;
这条语句是没有错误的,首先可以了解到‘=’作为一个运算符,它有从右至左的结合性。当定义了变量a,b,c且没有赋初值的情况下,如果c=a=b,这样子是绝对会报错误的;当c=a=b=5;这样应可以翻译成b=5;a=b;c=a; 因此这三条语句是绝对正确的。
主函数【main】不是mian,作为一个函数必须有返回值,这是肯定的,不管是主函数还是子函数,当main不带void的时候,编译环境或者说编译器会默认main的返回值是void,就相当于带了void;但是作为一名优秀的程序员的话是会手写上返回值的类型,这是一种态度,既让程序易读也使程序更加规范。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小周喜欢熬夜
高粉答主

2021-04-07 · 每个回答都超有意思的
知道大有可为答主
回答量:8789
采纳率:72%
帮助的人:211万
展开全部
优先级
在c语言的表达式中,如果存在多个运算符的时候,需要考虑数据的优先级和结合方向的问题,例如:x = a + b * c -d在这个例子中,c语言的处理流程是:
1. 先做乘法b*c,
2. 然后先做加法,后做减法
3. 最后将计算结果赋值给x
我们验证一下:

1 + 2 *3 -4,结果为3,验证成功!

通过这个例子,我们可以总结如下:对于表达式
a op1 b op2 c ,它的运行逻辑有两种可能性:
1. 如果op1优先级高于op2,则为:(a op1 b) op2 c
2. 如果op2优先级高于op1,则为:a op1 (b op2 c)
如果op1与op2优先级相同,则取决于结合方向。所谓结合方向指的是“从左至右”或“从右至左”。
结合方向
关于结合方向,我们一起来探讨一下,还是刚刚的例子:x = a+b *c -d,这里面有二元运算和赋值运算,在c语言中:
l 赋值运算的结合方向为:从右至左
l 二元运算符的结合方向为:从左至右
我们假设 b*c 的值为m,则,
l a + m -d 可以翻译为 (a + m) -d,,结合方向是从左至右
l x = a + m -d 可以翻译为: x = (a + m -d),结合方向是从右至左
在C/C++中,所有的运算符都有明确的优先级和结合方向定义,具体如下:

问题解答
铺垫好了知识点,我们回归到最初的问题上,x +=5 ==4,
由于==号的优先级大于+=号,所以这句代码的逻辑可以解读为:
1. x += (5 ==4)
2. 即先判断 5 == 4是否成立,此时不成立,返回false,即返回0
3. 然后再计算x+=0,所以最终结果为0。
使用代码验证一下:

执行结果:

可以看到,输出的结果依然为10,说明x添加的值为0,得到验证。
接下来,我们修改一下代码,让两个数字比较值返回true,再次验证一下结果。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
贝兰希戊
2019-02-01 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:25%
帮助的人:763万
展开全部
可以连续赋值,编译器是从右往左赋值,c=a=b=5就按照b=5,a=b,c=a赋值
main
前带void表示main函数返回类型为空类型
在较早的编译器下,main前面不带void也可,编译器会默认为void返回类型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shine_4_u
2012-12-18 · 超过15用户采纳过TA的回答
知道答主
回答量:67
采纳率:0%
帮助的人:33.7万
展开全部
main前带void是旧试写法,最新的编译器不一定支持。
建议格式:int main(int argc, char **argv)

可以连续赋值,但是可读性较差。你的例子等价于调用
b=5
a=b
c=a
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式