1 运算符
Turbo C的运算符非常丰富, 主要分为三大类: 算术运算符, 关系运算符与逻辑运算符, 按位运算符。除此之外, 还有一些用于完成特殊任务的运算符。
由于Turbo C中字符型数会自动地转换成整型数, 因此字符型数也可以参加二目运算。
例如:
main()
{
char m, n; /*定义字符型变量*/
m='c'; /*给m赋小写字母'c'*/
n=m+'A'-'a'; /*将c中的小写字母变成大写字母'C'后赋给n*/
...
}
上例中m='c'即m=98, 由于字母A和a的ASCII码值分别为65和97。这样可以将小写字母变成大写字母, 反之, 如果要将大写字母变成小写字母, 则用c+ 'a'-'A'进行计算。
x++(x--)与++x(--x)没有什么区别, 但x=m++和x=++m却有很大差别。
x=m++ 表示将m的值赋给x后, m加1。
x=++m 表示m先加1后, 再将新值赋给x。
1.1 数据类型转换
例:
main()
{
float f;
int i=15;
f=i/2;
}
上面程序经运行后, f=7并不等于准确值7.5。正确的程序应该是:
main()
{
float f;
int i=15;
f=i/2.0;
}
Turbo C中true可以是不为0的任何值, 而false则为0。 使用关系运算符和逻辑运算符表达式时, 若表达式为真(即true)则返回1, 否则,表达式为假(即false),则返回0。
1.2 按位运算符
Turbo C和其它高级语言不同的是它完全支持按位运算符。这与汇编语言的位操作有些相似。Turbo C中按位运算符有:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
操作符 作用
────────────────────────────
& 位逻辑与
| 位逻辑或
^ 位逻辑异或
- 位逻辑反
>> 右移
<< 左移
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
按位运算是对字节或字中的实际位进行检测、设置或移位, 它只适用于字符型和整数型变量以及它们的变体, 对其它数据类型不适用。
关系运算和逻辑运算表达式的结果只能是1或0。而按位运算的结果可以取0或1以外的值。
要注意区别按位运算符和逻辑运算符的不同, 例如, 若x=7, 则x&&8 的值为真(两个非零值相与仍为非零), 而x&8的值为0。
移位运算符">>"和"<<"是指将变量中的每一位向右或向左移动, 其通常形式为:
右移: 变量名>>移位的位数
左移: 变量名<<移位的位数
经过移位后, 一端的位被"挤掉",而另一端空出的位以0 填补,所以, Turbo C中的移位不是循环移动的。
二、"&"和"*"运算符
"&"运算符是一个返回操作数地址的单目操作符。
"*"运算符是对"&"运算符的一个补充, 它返回位于这个地址内的变量值, 也是单目操作符。
例如:
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。
1.3 Turbo C运算符的优先级
Turbo C规定了运算符的优先次序即优先级。当一个表达式中有多个运算符参加运算时, 将按下表所规定的优先级进行运算。表中优先级从上往下逐渐降低,同一行优先级相同。
例如:
表达式 10>4&&!(100<99)||3<=5 的值为1
表达式 10>4&&!(100<99)&&3<=5 的值为0
Turbo C运算符的优先次序
━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━
表达式 ┃优先级
────────────────────────────╂────
()(小括号) [](数组下标) .(结构成员) ->(指针型结构成员)┃ 最高
────────────────────────────┃ ↑
!(逻辑非) .(位取反) -(负号) ++(加1) --(减1) &(变量地址)┃ │
────────────────────────────┃ │
*(指针所指内容) type(函数说明) sizeof(长度计算) ┃ │
────────────────────────────┃ │
*(乘) /(除) %(取模) ┃ │
────────────────────────────┃ │
+(加) -(减) ┃ │
────────────────────────────┃ │
<<(位左移) >>(位右移) ┃ │
────────────────────────────┃ │
<(小于) <=(小于等于) >(大于) >=(大于等于) ┃ │
────────────────────────────┃ │
==(等于) !=(不等于) ┃ │
────────────────────────────┃ │
&(位与) ┃ │
────────────────────────────┃ │
^(位异或) ┃ │
────────────────────────────┃ │
|(位或) ┃ │
────────────────────────────┃ │
&&(逻辑与) ┃ │
────────────────────────────┃ │
||(逻辑或) ┃ │
────────────────────────────┃ │
?:(?表达式) ┃ │
────────────────────────────┃ │
= += -=(联合操作) ┃ │
────────────────────────────┃ │
,(逗号运算符) ┃ 最低
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━