keil中^符号什么意思
在标准C语言中是按位异或运算符。例如 0x11 ^ 0xFF = 0xEE
在51扩展中,若用于位定义,则指定从某位寻址寄存器开始偏移。例如 sbit SDA_PIN = P1 ^ 2; 后续C51编译器就会在处理SDA_PIN时,将其按照P1寄存器的bit2进行相关的位操作。
keil中C语言对单个端口进行操作时,就必须像sbit s=P1^0定义,然后才能借助s对单个端口进行赋值吗?
因为涉及到“^”这个符号的解析问题。
在标准C中这是异或运算符,因此在程序段中无法区分你是要做异或运算还是要取位偏移。
所以折中的方法就是增加sbit这种特殊声明来将符号绑定到位寻址变量。
keil中,或运算和不等于,或|| !! != |= 哪个对?
“ | ”按位或运算符,优先级12级,如0x01 | 0xf0运算结果为0xf1。
“ || ”逻辑或运算符,也可以称之为条件或,优先级14级,如0x01 || 0xf0运算结果为True。
“ == ”等于运算符;“ != ”不等于运算符。优先级9级。
=、 +=、 -=、 *=、 /=、 %=、 =、 ^=、 |=、 =、 =赋值运算符。优先级16级。
C语言的运算符主要用于构成表达式,同一个符号在不同的表达式中,其作用并不一致。下面按计算的优先顺序,分别说明不同作用的表达式。需要特别指出,在C语言标准中,并没有结合性的说法。[1]
相同优先级运算符,从左至右依次运算。注意后缀运算优先级高于前缀。因此++i++应解释为++(i++)。
而与或非的运算优先级都不一样,因此a b || b c解释为(a b) || (b c)
合理使用优先级可以极大简化表达式。
基本表达式 1级
基本表达式(Primary expressions),主要是用于运算符之间,做为运算数。
标识,常量,字符串文字量,优先级提升表达式最优先执行。
优先级提升表达式是指圆括号包围的表达式,如“( expression )”
后缀表达式 2极
postfix-expression [ expression ],数组下标运算。
postfix-expression ( argument-expression-list),函数调用,括号内的参数可选。
postfix-expression . identifier,成员访问,
postfix-expression – identifier,成员访问,-号之前应为指针。
postfix-expression ++,后缀自增
postfix-expression –,后缀自减
( type-name ) { initializer-list }
( type-name ) { initializer-list , } 复合初始化,C99后新增。
单目/一元运算 3级
++ unary-expression 前缀自增
— unary-expression 前缀自减
unary-operator cast-expression 单目转型表式式, 包括 取地址 ,提领 * , 正号+ ,负号- 位反~ 逻辑否!。
sizeof unary-expression 求类型长度,对表达式求类型长度
sizeof ( type-name ) 求类型长度
强制类型表达式 4级
( type-name ) cast-expression,强制表达式成为type-name指定的类型。
乘法表达式 5级
“ * ” 乘法运算符;“ / ”除法运算符;“ % ” 取余运算符。
加法运算符 6级
“ + ”加法运算符;“ – ”减法运算符。
移位运算符 7级
左移运算符; 右移运算符。
关系运算符 8级
、=、、=关系运算符。
相等运算符 9级
“ == ”等于运算符;“ != ”不等于运算符。
位与运算符 10级
“ ”按位与运算符
位异或运算符 11级
“ ∧ ”按位异或运算符(Bitwise exclusive OR operator)。
位或运算符 12 级
“ | ”按位或运算符(Bitwise inclusive OR operator)。
逻辑与运算符 13级
“”逻辑与运算符。
逻辑或运算符 14 级
“ || ”逻辑或运算符。
三元条件运算符 15级
? :条件运算符。
赋值运算符 16 级
=、 +=、 -=、 *=、 /=、 %=、 =、 ^=、 |=、 =、 =赋值运算符。
逗号运算符 17级
“,”逗号运算符。
[pre]C 语言中,逗号(,)也可以是运算符,称为逗号运算符(Comma Operator)。逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式,称为逗号表达式。其一般形式为:
子表达式1, 子表达式2, …, 子表达式n
例如:
a + b, c = b, c++
逗号运算符的优先级是所有运算符中级别最低的,通常配合 for 循环使用。逗号表达式最右边的子表达式的值即为逗号表达式的值。上例中,c++ 的值(c 自增之前的值)即为该表达式的值。
逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算。因此,上例中,c 得到 b 的值后,才进行自增运算。
单片机C语言Keil C51编译器把^认为是异或还是某字节的第几位
是每一位都进行异或得到的结果 例如 10和1异或
10 : 1010
1: 0001
结果 :1011 为11