C语言中什么情况下是从右向左运算的?

 我来答
小夏聊生活
高能答主

2019-12-10 · 专注于分享生活知识,热爱生活
小夏聊生活
采纳数:447 获赞数:114596

向TA提问 私信TA
展开全部

C语言的入参是从右到左的,因此参数入栈的时候,是后进先出。这样第一个参数才能第一个出来,所以C语言支持可变数量参数,能够从左到右的顺序读取参数。

在C语言标准中好像并没有看到有关表述。参数入栈的方式应该是操作系统所实现,由gcc等编译器转换成机器语言

作为一门跨平台的编程语言,一般都是很抽象的,尽量与底层脱钩。比如在C语言标准的文档,对字节,比特等的定义都是很抽象的,只是数据类型,与底层无关。

左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符

例如:

int i = 1;

i = i << 2; //把i里的值左移2位

扩展资料

1、左移里一个比较特殊的情况是当左移的位数超过该数值类型的最大位数时,编译器会用左移的位数去模类型的最大位数,然后按余数进行移位

2、符号位向右移动后,正数的话补0,负数补1。也就是汇编语言中的算术右移,同样当移动的位数超过类型的长度时,会取余数,然后移动余数个位。

匿名用户
2011-03-11
展开全部
在一些特殊的运算符的情况下,是从右向左运算的。
这些运算符有
逻辑非运算符!
按位取反运算符~
自增运算符++
自减运算符--
负号运算符-
指针运算符*
取地址运算符&
长度运算符sizeof
类型转换运算符(类型)
条件运算符? :
赋值运算符= += -= *= /= %= >>= <<= &= ^= |=
你在楼上说的那个确实是先算出右边的再输出的。
前几天做一个题目的时候刚好测试过~
但是应该是输出1,1吧

是先输出然后i再自加的吧。
你可以在这个printf语句后面再加一个printf函数输出i,就发现已经是2了
或者你把i++改成++i,就会发现输出两个2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sun_siliang
推荐于2017-09-02 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:4467万
展开全部
下面三种运算是从右向左运算。
1赋值,复合赋值;
2条件运算;
3单目运算符。
追问
是不是有些语句里面也要从右向左运算的,例如printf 语句?
追答
是的,主要是函数参数入栈的方式造成有,入栈从右向左,运算也就从右向左。
i=1;
printf("%d%d",i,i++);//输出2 1
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
尺蠖丨蚩
推荐于2018-01-27 · TA获得超过303个赞
知道答主
回答量:68
采纳率:75%
帮助的人:5.6万
展开全部
一般是复合运算还是自增自减
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Whalfa
2017-12-12
知道答主
回答量:1
采纳率:0%
帮助的人:905
展开全部

例子举的有问题

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式