关系操作符

>
>=
<
<=
!= 用于测试“不相等”
== 用于测试“相等”

注意:比较两个字符串相等不能使用==


逻辑操作符  (判断真假,真的结果是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;
}

C语言——操作符(中)_#include