林雪花优秀作者
原创内容 来源:小居数码网 时间:2024-08-15 00:25:01 阅读() 收藏:26 分享:54 爆
导读:您正在阅读的是关于【数码知识】的问题,本文由科普作家协会,生活小能手,著名生活达人等整理监督编写。本文有927个文字,大小约为4KB,预计阅读时间3分钟。
C语言设计哲学要求对象的声明形式与它的使用形式尽可能相似,好处是各种不同运算符的优先级在“声明”和“使用”时是一样的,缺点在于运算符的优先级(有18级或更多,取决于你怎么算)是C语言设计不当、过于复杂之处:
括号包括改变优先级的小括号,函数声明与调用的括号,数组声明与元素引用的中括号[],且它们都是后缀运算符(后缀运算符具有较高的优先级)。相应的,指针声明与解引用运算符*是前缀运算符,相对于后缀运算符而言,具有相对较低的优先级。
逗号有区分为两部分的潜在含义。
逗号表达式有按顺序运算的含义,具有右结合性,其值是最后面(最右边)部分的值。
将右值赋给左值,自然要先计算右值,而右值的计算自然涉及到全部运算符(逗号除外)。
i = 1,2;
i 的最终结果将是什么?对,我们知道逗号运算符的值就是最右边操作数的值。但在这里,赋值符的优先级更高,所以实际情况应该是:
(i = 1), 2; /* i的值为 1 */
i赋值为1,接着执行常量2的运算,表达式整体的结果是2,计算结果丢弃。最终,i的结果是 1而不是2。
位移运算符是一种特殊的算术运算。左移n位相对于乘以2的n次幂,右移n位相当于除以2的n次幂。
msb << 4 + lsb
流提取流运算符<<、>>是对位移运算符的重载,重载不能改变其优先级。
std::cout << (3 & 5); //<<相对于&,具有较高的优先级
关系运算符通常是一个二元 比较,先完成算术运算后才做关系运算。
按位运算符(不包括移位)是另一种关系,一种低层次关系。
逻辑运算符是复杂关系的结合。
#include <stdio.h>struct pair_tab{ int a; int b}pair,*ppair;void test(){ ppair pp = (ppair)malloc(sizeof(pair)); pp->a = 3; pp->b = 4; printf("%dn",(*pp).a); // 不能是*pp.a,因为struct member operator.有更高的优先级,}
为什么struct member operator.有更高的优先级?因为成员运算符是将基址与偏移地址结合成一个整体来引用一个内存块,会很自然地结合为一个整体。
-End-
上面就是小居数码小编今天给大家介绍的关于(c语言中运算优先级和运算符优先级)的全部内容,希望可以帮助到你,想了解更多关于数码知识的问题,欢迎关注我们,并收藏,转发,分享。
94%的朋友还想知道的:
(424)个朋友认为回复得到帮助。
部分文章信息来源于以及网友投稿,转载请说明出处。
本文标题:c++关系运算符优先级(c语言中运算优先级和运算符优先级):http://sjzlt.cn/shuma/155716.html