操作符详解1:
前一节的链接:http://t.csdn.cn/1xrNwhttp://t.csdn.cn/1xrNw
操作符详解2:
条件操作符 : exp1 ? exp2 : exp3
逗号表达式:多个表达式,结果为最后一个表达式的结果
下标引用操作符:[ ]
int arr[10]={1,2,3,4,5,6,7,8,9,10};
for(int i=0;i<10;i++)
{
arr[i]=i+1;
}
函数调用操作符 ( )
int main()
{
int len = strlen("abc");
printf("%d", len);
return 0;
}
访问结构成员
- . 点操作符
- -> 结构体指针
struct S
{
int num;
char c;
};
void test(struct S* ps)
{
printf("%d", ps->num);
printf("%c", ps->c);
}
int main()
{
struct S s = { 100,'c' };
printf("%d", s.num);
printf("%c", s.c);
test(&s);
return 0;
}
表达式求值
隐式类型转换:小于int类型的大小在CPU的计算中要进行整型提升
整型提升是按照变量的数据类型的符号位来提升的,如果是无符号类型,高位直接补0
int main()
{
char a = 3;
//整形提升
//00000000 00000000 00000000 00000011
// 发生截断
//00000011
char b = 127;
//00000000 00000000 00000000 01111111
//01111111
char c = a + b;
//00000000 00000000 00000000 00000011
//00000000 00000000 00000000 01111111
//00000000 00000000 00000000 10000010
//10000010-截断
printf("%d", c);//-126
//整型提升后,要返回原码
//负号,整形提升为1
//11111111 11111111 11111111 10000010
//11111111 11111111 11111111 10000001
//10000000 00000000 00000000 01111110 -126
return 0;
}
算术转换
如果一个操作符的操作数属于不同类型,要向上转化成相同类型才能进行计算
操作符的属性
三个影响的因素
- 操作符的优先级
- 操作符的结合性
- 是否控制求值顺序