C语言——操作符详解(下)-创新互联-古蔺大橙子建站
RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
C语言——操作符详解(下)-创新互联
C语言——操作符详解(下)
  • 一、赋值操作符
  • 二、复合赋值符
  • 三、单目操作符
    • 单目操作符介绍
  • 四、 关系操作符
  • 五、逻辑操作符
  • 六、条件操作符
  • 七、逗号表达式
  • 八、下标引用、函数调用和结构成员
    • 8.1 [ ] 下标引用操作符
    • 8.2 ( ) 函数调用操作符
    • 8.3访问一个结构的成员

创新互联专注于企业营销型网站、网站重做改版、茌平网站定制设计、自适应品牌网站建设、H5响应式网站商城网站开发、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为茌平等各大城市提供网站开发制作服务。一、赋值操作符

可以让你对于前不满意的值。也就是你可以给自己重新赋值。

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;
}

编译结果:
在这里插入图片描述

八、下标引用、函数调用和结构成员 8.1 [ ] 下标引用操作符

操作数:一个数组名 + 一个索引值

int main()
{int arr[5] = {0,1,2,3,4 };
		printf("%d ", arr[2]);

	return 0;
}

编译结果:
在这里插入图片描述

8.2 ( ) 函数调用操作符
#includevoid test1()
 {printf("hehe\n");
 }
 void test2(const char *str)
 {printf("%s\n", str);
 }
 int main()
 {test1();            //实用()作为函数调用操作符。
 test2("hello bit.");//实用()作为函数调用操作符。
 return 0;
 }

编译结果:
在这里插入图片描述

8.3访问一个结构的成员
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