C语言中什么情况下是从右向左运算的?
展开全部
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
这些运算符有
逻辑非运算符!
按位取反运算符~
自增运算符++
自减运算符--
负号运算符-
指针运算符*
取地址运算符&
长度运算符sizeof
类型转换运算符(类型)
条件运算符? :
赋值运算符= += -= *= /= %= >>= <<= &= ^= |=
你在楼上说的那个确实是先算出右边的再输出的。
前几天做一个题目的时候刚好测试过~
但是应该是输出1,1吧
是先输出然后i再自加的吧。
你可以在这个printf语句后面再加一个printf函数输出i,就发现已经是2了
或者你把i++改成++i,就会发现输出两个2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
下面三种运算是从右向左运算。
1赋值,复合赋值;
2条件运算;
3单目运算符。
1赋值,复合赋值;
2条件运算;
3单目运算符。
追问
是不是有些语句里面也要从右向左运算的,例如printf 语句?
追答
是的,主要是函数参数入栈的方式造成有,入栈从右向左,运算也就从右向左。
i=1;
printf("%d%d",i,i++);//输出2 1
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般是复合运算还是自增自减
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询