1楼:匿名用户
a&&b&&c||a,逻辑值1;
!(a&&b&&c||a)这个是0;
a&&b&&c没有错误,值是0。
c语言逻辑运算符顺序是什么?
2楼:匿名用户
ls,貌似&&的优先级比||大 = 赋值语句结合性 自右相左
a=b=c=1;等价于 c = 1;b = c; a = b;
-------------------------
对以上回答进行一点补充
首先声明 ||和&&运算符均属于短路运算符;
什么是短路运算符举个简单例子
若 a = 1; a||a++;运行后结果是什么,变量a值为多少?
||逻辑或对第一项a进行判断是否为0,若不为零则返回值为1;且不在进行后面的a++运算,这就是短路运算符的特性,这样一来,a的值还是1没有改变,同理 a =0; 0&&a++;的运行结果为a=0;
举个形象点的例子:
a=1 a就是真
b=0 b就是假
a||a-- 真||a++,既然已经有真的了就没必要再判断a--是否为真 1||a++;肯定是真的;
同理 b&&b++ ,假&&b--既然已经有假的了就没有必要判断b++真假,同时b++也就不会被执行
++a||++b&&++c;这个语句根据算数运算符的优先级关系 &&的优先级比||大 ‘可以这样理解’
所以先运行对++a||++b 和 ++c进行逻辑与(&&)运算,并先判断++a||++b是否为假若假则不进行++c;在判断 ++a||++b 是否为真的过程中,进行了++a和++b的||(逻辑或)运算,在逻辑或运算中先判断++a是否为零,这个过程中相当于 先a=a+1;再if (a!=0) 因为前面a=1,再运行++a,a这时等于2所以在if (a!=0) 成立则,不会运行++b;
所以运行结果为a =2 ,b=c=1;
再程序执行++a||++b&&++c;这条语句的过程中只有a变量的值发生改变,而不是楼下说的那样
“在执行“++a||++b&&++c;”语句之前完成自加运算” 这是错的·
上述方法只是为了帮助你理解这个++a||++b&&++c;语句的意思
若我写个a=b=c=1; ++a||++b&&++c||++a||++b&&++c||++a||++b&&++c;你说该怎么理解?
挨个分析优先级,?
那不得疯了
所以那样也没必要++a||++b&&++c||++a||++b&&++c||++a||++b&&++c;只要由左到右依次运行这样来判断就好了就是(++a )语句1|| (++b&&++c||++a||++b&&++c||++a||++b&&++c)语句2
(++a)==2!=0所以嘛,语句2就不执行了 这样判断也符合 该语句的执行顺序
c语言逻辑运算符有哪些,及运算先后顺序? 5
3楼:匿名用户
为|逻辑运算有三种,与或非。
1 逻辑与运算,符号为&&,形式为a&&b;
2 逻辑或运算,符号为||,形式为a||b;
3 逻辑非运算,符号为!,形式为!a。
当逻辑运算写在一起的时候,逻辑非!运算优先级最高,其次为逻辑与&&,最低为逻辑或||。
即先计算非,再计算与,最后计算或。
同类运算时,运算顺序为从左到右。
4楼:匿名用户
c语言逻辑运算符有 !(非) > &&(与) > ||(或)
5楼:凌筱泠
按先后顺序:!逻辑非运算符、&&逻辑与运算符、||逻辑或运算符、
c语言提供3种逻辑运算符,按优先级高低它们分别是
6楼:文化厨子
c语言中的三种逻辑运算符为:逻辑非(!),逻辑与(&&)、逻辑或(||)。
按优先级从高到低排列:!、&&、||,!的优先级最高,&&的优先级居中,||的优先级最低。
7楼:匿名用户
您好,sa团队给出的答案优先次序:!(非)→&&(与)→||(或)
8楼:匿名用户
逻辑运算符的优先级是相同的,且只有两个。这两个逻辑运算符是 : &&、||
关于c语言逻辑运算符一道简单的题目!
9楼:夏碧梦
这是逻辑运算符的短路判断造成的!
由于逻辑运算符||和&&实现判断左值的,显然如果根据左值就能够判断整个表达式真假的话,那剩下的就不用判断了!目前的c编译就是这样处理的!
对于逻辑或||,左值为真,整个表达式就为真;
对于逻辑与&&,左值为假,整个表达式就为假!
++x||++y&&++z中先执行逻辑或||左边的++x后x=1,左值为真,后面的自然就不用处理了!
10楼:匿名用户
这个是c语言的优化造成的。
按照c语言对逻辑或运算优化计算的规定,当逻辑或的左运算分量满足时,不再计算逻辑或的右运算分量,而直接得到逻辑或运算的结果。由于逻辑或的右运算分量不曾计算过,所以变量y,z的值也不为变化。
11楼:伊·梵
就是这样算的
逻辑运算符从左至右还确保其操作数的计算。 但是,它们计算必要的操作数的最小数目确定表达式的结果。 这称为 “短路计算”。
c语言中运算符有哪几种,优先级顺序是怎样
12楼:枫玺
c语言中,运算符除了常见的三大类,算术运算符、关
系运算符与逻辑运算符之外,还有一些用于完成特殊任务的运算符。
运算符的运算优先级共分为15 级,1 级最高,15 级最低。 在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的结合性所规定的结合方向处理。
一级运算符:标识,常量,字符串文字量,优先级提升表达式最优先执行。
二级运算符:数组下标运算(expression)、函数调用(argument-expression-list)、成员访问(identifier、 -> identifier)、后缀自增(i++)、后缀自减(i--)、 复合初始化(initializer-list)。
**运算符:前缀自增(++i)、前缀自减(--i)、单目转型表式式(取地址& ,提领 * , 正号+ ,负号-、 位反~ 逻辑否!)、求类型长度(sizeof unary-expression)。
四级运算符:强制表达式成为type-name指定的类型( type-name ) cast-expression。
五级运算符:“ * ” 乘法运算符。
六级运算符:“ + ”加法运算符。
七级运算符:<< 左移运算符;>> 右移运算符。
八级运算符:<、<=、>、>=关系运算符。
九级运算符:“ == ”等于运算符;“ != ”不等于运算符。
十级运算符:“ & ”按位与运算符。
十一级运算符:“ ∧ ”按位异或运算符。
十二级运算符:“ | ”按位或运算符。
十**运算符:“&&”逻辑与运算符。
十四级运算符:“ || ”逻辑或运算符。
十五级运算符:? :条件运算符。
扩展资料
c语言中各运算符的结合性:
1、左结合性(自左至右):
例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z 则y 应先与“-”号结合,执行x-y 运算,然后再执行+z 的运算。这种自左至右的结合方向就称为“左结合性”。
2、右结合性(自右至左)
自右至左的结合方向称为“右结合性”。最典型的右结合 性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z 再执行x=(y=z)运算。
c语言运算符中有不少为右结合性,应注意区别,以避免理解错误。
13楼:匿名用户
c语言的运算符包括单目运算符、双目运算符、三目运算符,优先级如下:
第1优先级:各种括号,如()、等、成员运算符 . ;
第2优先级:所有单目运算符,如++、--、!、~等;
第3优先级:乘法运算符*、除法运算符/、求余运算符%;
第4优先级:加法运算符+、减法运算符-;
第5优先级:移位运算符<<、>>;
第6优先级:大于运算符》、大于等于运算符》=、小于运算符<、小于等于运算符<=;
第7优先级:等于运算符==、不等于运算符!=;
第8优先级:按位与运算符&;
第9优先级:按位异或运算符^;
第10优先级:按位或运算符|;
第11优先级:逻辑与运算符&&;
第12优先级:逻辑或运算符||;
第13优先级:三目条件运算符 ?: ;
第14优先级:各种赋值运算符,如=、+=、-=、*=、/= 等;
第15优先级:逗号运算, 。
14楼:
优先级 运算符 含义 运算符类型 结合方向
15 () 圆括号 单目 自左向右
下标运算符
—> 指向结构体成员运算符
、 结构体成员运算符
14 ! 逻辑非运算符 自右向左
~ 按位取反运算符
++ 自增运算符
-- 自减运算符
- 负号运算符
(类型) 类型转换运算符
* 指针运算符
& 地址运算符
sizeof 长度运算符
13 * 乘法运算符 双目 自左向右
/ 除法运算符
% 求余运算符
12 + 加法运算符
- 减法运算符
11 << 左移运算符
>> 右移运算符
10 <、<=、>、>= 关系运算符
9 == 等于运算符
!= 不等于运算符
8 & 按位与运算符
7 ^ 按位异或运算符
6 | 按位或运算符
5 && 逻辑与运算符
4 || 逻辑或运算符
3 ?: 条件运算符 三目 自右向左
2 =、+=、-=、*=、
/=、%=、>>=、
<<=、&=、^=、|= 赋值运算符 双目
1 , 逗号运算符 双目 自左向右
中国物联网校企联盟技术部
c语言中关系运算符的优先级高于逻辑运算符吗
1楼 不全是。关系运算符的优先级高于 逻辑与 和 逻辑或 ,但低于 逻辑非 。 2楼 匿名用户 逻辑运算符里面的 很厉害的,比算术运算符优先级还高 因此正确的说法 c语言中关系运算符的优先级高于逻辑与和逻辑或,但是低于逻辑非 3楼 是的不是有个优先级歌吗 圆方括号箭头一句号 自增自减非反负 针强地址...
关于c语言以下程序运行后的输出结果是
1楼 阿瑞斯ares啊 联合体里面的所有成员共用同一块儿空间 如果你的是32位机器的话 b 0x12345678 占4个字节 根据你的输出的c 78 则你的是小端机器 0x12345678 每两个数字占一个字节 char c 只占一个字节 所以只会取b内容的一个字节的内容 你的是小端机器 所以输出为...
c语言作业编写程序读入数字字符,C语言作业:编写一个程序,读入一个数字字符0——9,将其转换为相应的整数后显示出来 求大神解答啊
1楼 匿名用户 你好,程序如下 include void main 有疑问提出望采纳 2楼 匿名用户 如下 include int main 3楼 匿名用户 include int main c语言作业 编写一个程序,读入一个数字字符0 9,将其转换为相应的整数后显示出来 4楼 include vo...