C语言——操作符(中)
精选
原创
©著作权归作者所有:来自51CTO博客作者普热希缇的原创作品,请联系作者获取转载授权,否则将追究法律责任
关系操作符
>
>=
<
<=
!= 用于测试“不相等”
== 用于测试“相等”
注意:比较两个字符串相等不能使用==
逻辑操作符 (判断真假,真的结果是1,假是0)
&& ||
逻辑与(并且) 逻辑或 (或者)
#include<stdio.h>
int main()
{
int a = 2;
int b = 0;
if(a && b)//&& 意思是a,b都为真时进入,至少有一个为假时跳过
{
printf("hehe\n");
}
if(a || b)//|| 只要有一个为真就为真,同时为假时才为假
{
printf("haha\n");
}
return 0;
}
////并不会打印
////打印haha
区分逻辑与(&&) 和 按位与(&) 1&2----->0 1&&2---->1
区分逻辑或(||) 和 按位或(|) 1|2----->3 1||2---->1
#include <stdio.h>
int 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;
}
int main()
{
int i = 0, a = 1, b = 2, c = 3, d = 4;
i = a++||++b||d++;
printf("i = %d\n a = %d\n b = %d\n c = %d\nd = %d\n", i .a, b, c, d);
return 0;
}
//1 2 2 3 4
//当a = 0时
int main()
{
int i = 0, a = 0, b = 2, c = 3, d = 4;
i = a++||++b||d++;
printf("i = %d\n a = %d\n b = %d\n c = %d\nd = %d\n", i .a, b, c, d);
return 0;
}
//1 1 3 3 4
优先权平等下从左到有开始运算
逻辑与运算碰到错误直接结束,后面的运算就不再继续
逻辑或运算碰到正确直接结束,后面的运算就不再继续
(可以理解为从左到右运算时,逻辑与的话是遇到0即假时仅运算该运算符前的,后面的不在运算即原值。逻辑或同理)
条件操作符(三目操作符)
exp1 ? exp2 : exp3
exp1表示判断条件,exp2是exp1成立时的结果,exp3是不成立的结果
int main()
{
int a = 3;
int b = 0;
/*
if(a>5)
b = -1;
else
b = 1;*/
//可用条件操作符达成
b = (a>5 ? -1: 1) ;
}
逗号表达式(就是用逗号隔开的多个表达式)
exp1, exp2, exp3, …expn
逗号表达式,从左向右依次执行,整个表达式的结果是最后一个表达式的结果。
//逗号表达式使用灵活,可用在很多地方
int main()
{
int a = 2;
int b = 4;
int c = 5;
int d = (c = 3,a = b + 1,b = a + 3);
printf("%d\n",d);
return 0;
}
//结果:8
//逗号表达式也可用在if语句中
if (a =b + 1, c=a / 2, d > 0)
//又如这个中
a = get_val();
count_val(a);
while (a > 0)
{
//业务处理
a = get_val();
count_val(a);
}
//如果使用逗号表达式,改写:
while (a = get_val(), count_val(a), a>0)
{
//业务处理
}
#include<stdio.h>
int main()
{
int arr[] = {1,2,(3,4),5};
printf("%d\n",sizeof(arr));
return 0;
}
//(3,4)中是逗号表达式取最后的数即4
//int arr[] = {1,2,4,5};
//4个整形数即4*4 = 16
下表引用,函数调用和结构成员
***下表引用操作符 []
int arr[10];//创建数组
arr[9] = 10;//实用下标引用操作符。
// [ ]的两个操作数是arr和9。
***函数调用操作符 ()
#include <stdio.h>
void test1()
{
printf("sasade");
}
test2(int x, int y)
{
return x + y;
}
int main()
{
test1(); //()为函数调用操作符,操作数为test1
test2(a,b);//操作数为test2,a,b
return 0;
}
***
. 结构体.成员名
-> 结构体指针->成员名
#include<stdio.h>
struct Book
{
char name[20];
char id[20];
int price;
};//注意结构体后需要加“;”
int main()
{
struct Book b = {"C语言",“021BV922”,55};
struct Book * pb = &b;
//为了找到结构体成员
printf("书名: %s\n", pb->name);
printf("书号: %s\n", pb->id);
printf("价钱: %s\n", pb->price);
//printf("书名: %s\n", (*pb).name);
//printf("书号: %s\n", (*pb).id);
//printf("价钱: %s\n", (*pb).price);
// printf("书名: %s\n", b.name);
// printf("书号: %s\n", b.id);
// printf("价钱: %s\n", b.price);
return 0;
}