IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言学习记录——?? 操作符(2) -> 正文阅读

[C++知识库]C语言学习记录——?? 操作符(2)

sizeof——计算字节大小。可以括号里放变量,也可以放类型。计算变量可以省括号,类型不可以省。假如sizeof括号里放入一个赋值的式子,式子并不实际计算,计算的值仍然是按照被赋值变量的类型来计算,比如int?b = 0;short a = 11;b = a - 6.结果仍然为4.并且b的值仍为0,没有变成a-6的值?

~? ? ?对一个数的二进制按位取反

假如a是0,按位取反,得到全部都是1的二进制数,但是这是补码,要打印的话则是打印原码,转换过来就是-1.~之后也可以放括号。

前后置++ --

int a = 3

printf("%d \n", ++a)这样打引出4.如果++a,就是先打印出3,然后a再加1,再次打印的话,结果就是4

*? ? ?间接访问操作符

解引用操作。

(类型)强制类型转换

int a = (int) 3.14

关系操作符

>

>=

<

<=

!=

==

逻辑操作符

&&? ? ? ? ? 逻辑与

||? ? ? ? ? ? ? 逻辑或

&&? ? 两者都为真,则为真,打印1.

||? ? ? ? 有一为真,则为真,打印1.

条件操作符

语句1?? ?语句2:语句3

语句1是否为真,为真就是真,。结果是表达式2的值;为假,则表达式3的值是结果

int main()

{

? ? int a = 34;

? ? int b = 5;

? ? if(a > b)

? ?

? ? ? ? printf("%d\n", 3);

? ??

? ? else?

? ??

? ? ? ? printf("%d\n", -3);

? ??

? ? b = (a > b? 3 : -3);或者这样写代码

? ? return 0;

}

再者可用于比较大小

int main()

{

? ? int a = 10;

? ? int b = 20;

? ? int max = 0;

? ? if(a > b)

? ? max = a;

? ? else

? ? max = b;

? ? max = (a > b? a : b);

? ? return 0;

}

逗号表达式

同逗号隔开的多个表达式。从左到右依次执行,整个表达式结果是最后一个表达式的结果

int a = 1;

int b = 2;

int c = (a > b, a = b + 10, a, b = a + 1);

最后c等于13.

如果最后是一个判断语句,为真则整个表达式为真,为假则整个表达式为假。

下标引用、函数调用、结构成员

下标引用操作符

声明数组a[10] = { 0 },[]就是下标引用操作符,此时a[2] = 1,那么操作数就是数组名a和索引值2.

函数调用操作符

定义了get_max函数,声明a和b的值,然后int?max = get_max(a , b),()就是操作符。操作数是get_max,a,?b

结构成员

???

struct Stu

{

? ? char name[20];

? ? int age;

? ? char id[20];

};

int main()

{

? ? int a = 10;

? ? struct Stu s1 = {"张三", 20, 20123123};

? ? struct Stu* ps = &s1;

? ? printf("%s\n", ps->name);

? ? printf("%d\n", ps/>age);

? ? return 0;

}

一个简单的小程序

表达式求值

表达式求值的顺序一部分是由操作符的优先级和结合性决定。同样,有些表达式的操作数在求值过程中可能需要转换为其他类型。

隐形类型转换??????

??????c的整型算术运算总是至少以缺少整型类型的精度来进行的。

为了获得这个精度,表达式中的字符的短整型操作数在使用之前被转换为普通整型,这种转换为整型提升。

?整型提升是按照变量的数据类型的符号位来提升的。

char a = 3;

char b = 127;

char c = a +b;

结果是-126.尽量写详细一点

char a = 3;

char b = 127;

char c = a +b;

3对应的二进制数,由于是char类型,那就只能8位,所以截断前面的,剩下00000011.同理,127就会剩下01111111.但是当相加时,CPU内整型计算器(ALU)的操作数的字节长度一般为int的字节长度,所以需要补到32位二进制数字。相加之后等于10000010,补成32个,1为符号位,所以11111111111111111111111110000010,这是补码,要得到原码,符号位不变,10000000000000000000000001111110,结果就是-126.

算术转换

如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数的转换为另一个操作数的类型,否则操作就无法进行。下面的层次体系称为寻常算术转换。

long double

double

float

unsigned long int

long int

unsigned int?

int

下面的主动转换为上面的,比如int和double一起运算,int转换为都double

操作符的属性

优先级,结合性,控制求值顺序。两个相邻操作符,优先级如果相同,取决于结合性。不同则看优先级。

优先级不写了

结合性

从右到左计算,从左到右,无结合性

是否控制求值顺序

典型的就是逻辑与,逻辑或,条件操作符?:,以及逗号表达式。逻辑与,前面为假,那么就不需要算之后的了,这样就是控制求值顺序了

当知道所有后,所有的表达式都可以找到顺序,找不到就是本身表达式错了

比如a*b + c*e + f*g? ? ? ? c + --c,一些无法按照操作符的属性计算,没有唯一的计算路径,不同编译器也不同结果。

结束。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-30 18:45:28  更:2022-01-30 18:46:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:13:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码