特殊运算符
一、"?"运算符
"?"运算符是三目运算符, 一般形式如下:
?:;
"?"运算符的含义如下: 表达式1的值, 如果为真, 则求表达式2 并将其作为整个表达值; 如果表达式1 的值为假, 则求表达式3 并将其作为整个表达值。
例如:
main()
{
int x, y;
x=50;
y=x>70?100:0;
}
本例中, y如果x=80, y将被赋值100。
因此, "?"可以替代某些操作符if-then-else形式的语句。
二、"&"和"*"运算符
"&"操作符是返回操作数地址的单目操作符。
"*"运算符是对"&"补充运算符, 它返回地址中的变量值, 也是单目操作符。
例如:
main()
{
int i, j, *m;
i=10;
m=&i; /*赋予变量i地址m*/
j=*m; /*地址m所指单元的值j*/
}
上述程序运行后, i=10, m为其对应的内存地址, j的值也为10。
三、","运算符
","操作符用于将多个表达式串在一起, ","运算符的左侧不返回, 右表达值是整个表达值。
例如:
main()
{
int x, y;
x=50;
y=(x=x-5, x/5); }
执行上述程序后,y值为9, 由于x的初始值为50, 减5后变为45, 45除5为9赋给y。
四、sizeof运算符
sizeof运算符是单目运算符, 它返回变量或类型的字节长度。
例如:
sizeof(double) 为8
sizeof(int) 为2
也可以求已定义的变量, 例如:
float f;
int i;
i=sizeof(f);
I值为4。
五、联合操作
Turbo C有一种特殊的简写方法, 它用来简化赋值语句, 适用于所有双目运算符。一般形式如下:
=
相当于
=
例如:
a=a b 可写成 a =b
a=a&b 可写成 a&=b
a=a/(b-c) 可写成 a/=b-c
Turbo C计算符的优先级是优先级。 当一个表达式中有多个操作符参与操作时, 按下表规定的优先级计算。表中优先级从上到下逐渐降低, 同行优先级相同。
例如:
表达式 10>4&&!(100<99)||3<=5 的值为1
表达式 10>4&&!(100<99)&&3<=5 的值为0
Turbo C计算符的优先顺序
()(小括号) [](数组下标) .(结构成员) ->(指针结构成员)( 最高)
!(逻辑非) .(位取反) -(负号) (加1) --(减1) &(变量地址)
*(指针所指内容) type(函数说明) sizeof(长度计算)
*(乘) /(除) %(取模)
(加) -(减)
<>(位右移)
(大于) >=(大于等于)
==(等于) !=(不等于)
&(位与)
^(位异或)
|(位或)
&&(逻辑与)