C语言——操作符详解(下)-创新互联
C语言——操作符详解(下)
四、 关系操作符
网站标题:C语言——操作符详解(下)-创新互联
当前网址:http://scgulin.cn/article/dochpp.html
- 一、赋值操作符
- 二、复合赋值符
- 三、单目操作符
- 单目操作符介绍
- 四、 关系操作符
- 五、逻辑操作符
- 六、条件操作符
- 七、逗号表达式
- 八、下标引用、函数调用和结构成员
- 8.1 [ ] 下标引用操作符
- 8.2 ( ) 函数调用操作符
- 8.3访问一个结构的成员
可以让你对于前不满意的值。也就是你可以给自己重新赋值。
int a=20;
a=10;
int weight = 120;//体重
weight = 89;//不满意就赋值
二、复合赋值符+=
-=
*=
/=
%=
>>=<<=
&=
|=
^
这些复合赋值符可以写成复合的效果,例子如下:
int a=10;
a=a+10;
a+=10;
三、单目操作符
单目操作符介绍符号 | 含义 |
---|---|
! | 逻辑反操作 |
- | 负值 |
+ | 正值 |
& | 取地址 |
sizeof | 操作数的类型长度(以字节为单位) |
~ | 对一个数的二进制按位取反 |
– | 前置、后置– |
++ | 前置、后置++ |
* | 间接访问操作符(解引用操作符) |
(类型) | 强制类型转换 |
>>=<<=
!= 用于测试“不相等”
== 用于测试“相等”
五、逻辑操作符&& 逻辑与
|| 逻辑或
eg:应该注意逻辑操作符与按位操作符的区别
例1:
int main()
{int a = 3;
int b = 2;
printf("%d\n", a & b);
printf("%d\n", a && b);
return 0;
}
编译结果:
例2:
int main()
{int a = 3;
int b = 2;
printf("%d\n", a | b);
printf("%d\n", a || b);
return 0;
}
编译结果:
一道面试题:
#includeint main()
{int i = 0,a=0,b=2,c =3,d=4;
i = a++ && ++b && d++;
printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
return 0;
}
编译结果:
这是因为a的初始值为0,而++在后,a所以为先用后加,而逻辑操作符看到a为0后,便不执行之后的代码,所以b,c,d的值并没有发生改变。所以输出结果为上述表达式。
变式1:改变a的初始值为1;
#includeint main()
{int i = 0,a=1,b=2,c =3,d=4;
i = a++ && ++b && d++;
printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
return 0;
}
编译结果:
当a的结果为1时,逻辑操作符看到a为真时,需要验证其他的表达式是否为真,所以会执行之后的代码,所以输出结果为上述表达式。
变式2:
#includeint main()
{int i = 0,a=1,b=2,c =3,d=4;
i = a++||++b||d++;
printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
return 0;
}
编译结果:
当a的初始值为1时,逻辑或只要有一个为真,其结果就为真,所以不会执行其他的代码,所以输出结果为上述表达式。
变式3:
#includeint main()
{int i = 0,a=0,b=2,c =3,d=4;
i = a++||++b||d++;
printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
return 0;
}
编译结果:
当a的初始值为0时,代码往后执行,执行到 ++b 时,式子结果为真,便不往后执行代码,所以输出结果为上述表达式。
exp1 ? exp2 : exp3
可以使用条件表达式实现找两个数中较大值。
如:
int main()
{int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
if (a >b)
printf("%d\n", a);
else
printf("%d\n",b);
printf("%d", (a >b) ? a : b);
return 0;
}
七、逗号表达式逗号表达式,就是用逗号隔开的多个表达式。
逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。
例如:
int main()
{int a = 1;
int b = 2;
int c = (a >b, a = b + 10, a, b = a + 1);
printf("%d", c);
return 0;
}
编译结果:
操作数:一个数组名 + 一个索引值
int main()
{int arr[5] = {0,1,2,3,4 };
printf("%d ", arr[2]);
return 0;
}
编译结果:
#includevoid test1()
{printf("hehe\n");
}
void test2(const char *str)
{printf("%s\n", str);
}
int main()
{test1(); //实用()作为函数调用操作符。
test2("hello bit.");//实用()作为函数调用操作符。
return 0;
}
编译结果:
struct Book
{char name[20];
char author[30];
int price;
};
int main()
{struct Book b1 = {"C语言", "小李", 66};
struct Book b2 = {"C++", "小王", 88 };
printf("《%s》 %s %d\n", b1.name, b1.author, b1.price);
printf("《%s》 %s %d\n", b2.name, b2.author, b2.price);
//结构体变量.成员名
return 0;
}
编译结果:
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网站标题:C语言——操作符详解(下)-创新互联
当前网址:http://scgulin.cn/article/dochpp.html