栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C/C++中的操作符详解(中)——初学者必备

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C/C++中的操作符详解(中)——初学者必备

前言

在C/C++中有许多拥有各种功能的操作符,用来实现我们需求,比如最常用的 = 就是操作符之一,又比如数***算中常见的+、-、* 和 / ,本文旨在通过各种详细的例子来介绍这些操作符,让你与它们之间不再陌生,本文承接上文,继续介绍操作符

分类

算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号表达式、下标引用、函数调用和结构体成员。

注意:

*本文继续介绍接下来的几个操作符,如果想看其他内容还得等一等下篇文章的发布。

文中图片上的代码所引用的头文件#include位于代码最顶部,因截图不方便,所以没有显示出来,如果读者想尝试其中的代码,记得加上#include!!!*

正文

单目操作符

单目操作符中的 & 与 *

&是取地址的意思,与按位与一模一样,不过按位与需要两个操作数,取地址符&只需要一个操作数,*是解引用操作符,出现于指针中,常常与取地址符搭配使用 

//取地址操作符与解引用操作符

int main()

{

1

2

3

4

5

6

7

8

int a = 0;

printf("%pn", &a);

int* pa = &a;

*pa = 10;

//pa就是a的地址,*pa就是通过地址找到a

printf("%dn", a);

printf("%p", pa);

return 0;

}

单目操作符中的强制类型转换

强制类型转换,顾名思义,就是将一种类型强制转换为另一种类型,如float型转换为int型 

//强制类型转换

int main()

{

1

2

3

int a = (int)3.14;

printf("a =%dn", a);

return 0;

}//将3.14强制转换为int型赋给a

单目操作符中sizeof与数组传递的关系

sizeof是计算大小的一个操作符,如sizof(int)为4字节 

//sizeof与数组传递

void test1(int arr[10])

{

1

printf("test1 arr =%dn", sizeof(arr));

}

void test2(char ch[10])

{

1

printf("test2 ch =%dn", sizeof(ch));

}

int main()

{

1

2

3

4

5

6

7

int arr[10] = { 0 };

char ch[10] = { 0 };

printf("arr =%dn", sizeof(arr));//4*10=40

printf("ch =%dn", sizeof(ch));//1*10=10

test1(arr);

test2(ch);

return 0;

}//当数组作为实参传递到函数中作形参时, //只传递首地址,也就是指针大小

关系操作符

关系操作符中的 > <

就是数学中的大于和小于 

//关系操作符 > <

int main()

{

1

2

3

4

5

6

7

int a = 1;

int b = 0;

if (a > b)

    printf("Yesn");

else if (a < b)

    printf("Non");

return 0;

}

关系操作符 >= <=

同大于小于逻辑一样,不过是加上了一个等于

//关系操作符 >= <=

int main()

{

1

2

3

4

5

6

7

8

int a = 1;

int b = 2;

int c = 2;

if (a >= b)

    printf("Yesn");

else if (b <= c)

    printf("Yes(2)n");

return 0;

}

关系操作符 != ==

不等于与等于,常常用于判断 

//关系操作符 != ==

int main()

{

1

2

3

4

5

6

7

8

int a = 1;

int b = 2;

int c = 2;

if (a != b)

    printf("Yesn");

if (b == c)

    printf("Yes(2)n");

return 0;

}//特别注意区分 == 和 = 的区别

逻辑操作符

逻辑与 &&

与,就是并且的意思,程序中表示一端有假就全为假,即一假则假 

//逻辑操作符 &&

int main()

{

1

2

3

4

5

6

7

int a = 1;

int b = 0;

if (a && b)

    printf("Yesn");

else

    printf("Non");

return 0;

}//一假则假

逻辑或 ||

或,就是或者的意思,比如在吃荆州面馆或吃河南烩面,二选一,不过在程序中表示一真则真 

//逻辑操作符 ||

int main()

{

1

2

3

4

5

6

7

int a = 1;

int b = 0;

if (a || b)

    printf("Yesn");

else

    printf("Non");

return 0;

}//一真则真

360面试笔试题

主要是考验逻辑操作符的使用 

//360面试笔试题

int main()

{

1

2

3

4

5

int a = 0, b = 1, c = 2, d = 4;

//int i = a++ && ++b && c++ && ++d;//1,1,2,4

int j = a++ || ++b || c++ || ++d;//1,2,2,4

printf("a =%dnb =%dnc =%dnd =%dnn", a, b, c, d);

return 0;

}

条件操作符(三目操作符)

三目就是有三个操作数的意思,形式为 exp1 ? exp2 : exp3 ; 

//条件操作符(三目操作符)

int main()

{

1

2

3

4

5

int a = 1;

int b = 0;

int c = (a > b ? a : b);

printf("%dn", c);

return 0;

}//相当于简化if else语句

逗号表达式

逗号表达式就是一堆表达式子加上一堆逗号,就是 exp1,exp2,exp3,..expN; 

//逗号表达式

int main()

{

1

2

3

4

5

int a = 1;

int b = 0;

int c = (a++, b += a, ++b);

printf("%dn", c);

return 0;

}//从左向右计算,最终取最右端计算值

就像三目操作符可以简化 if 双分支语句一样,逗号表达式也可以简化while语句 

//利用逗号表达式简化while语句

int main()

{

1

2

3

4

5

6

7

8

int a = 1;

int b = 0;

while (b += a,a++,a < 5)

{

}

printf("%d %dn", a, b);

return 0;

}

总结

本文详细介绍了几个操作符,但还没介绍完,还有几个留着下次详细讲,这篇中可能看着要比上舒服些,没有显得很冗长,代码显示效果也都还不错,因为上次是在CSDN上写的,玩不太明白,所以还是老老实实在牛客网上先发布后再复制粘贴到CSDN吧!上次的搬家都还没搬过来!所以我会在文章末尾附上标识符详解(上)的链接,希望小伙伴们多多支持,我尽快把上搬过来。

希望我的文章能够为大家再写代码时提供帮助!

希望各位大牛能够及时指出我文中存在的不足和错误,我好加以改正!

最后希望以后写的文章越来越好!

鸣谢

感谢比特科技鹏哥所传授的知识,让我受益匪浅,写出这篇文章!

CSDN-C/C++中的操作符详解(上)——初学者必备

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/976520.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号