abs()
函数:abs()
是 C 和 C++ 标准库中的函数,用于计算整数的绝对值。- 在 C 中,
abs()
函数的原型位于<stdlib.h>
头文件中,用于整数类型 - 在 C++ 中,
abs()
函数的原型位于<cstdlib>
头文件中,并可处理整数类型
fabs()
函数:fabs()
是 C 和 C++ 标准库中的函数,用于计算浮点数的绝对值。- 在 C 中,
fabs()
函数的原型位于<math.h>
头文件中,用于浮点数类型 - 在 C++ 中,
fabs()
函数的原型位于<cmath>
头文件中,并可处理浮点数类型
短整型的取值范围为-32768到32767之间
设x,y,z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为32。对于混合赋值表达式,它的值是最后一个被赋值的变量的值。
赋值操作的结果是被赋的值本身。因此,表达式 i = 0 的结果是 0。
‘a’ ASCII值为97
“abc”>0表达式的值为1:表达式 “abc” > 0 的结果为1(真值)。
这是因为在C++中,当一个字符串与一个数值进行比较时,会发生隐式的类型转换。字符串会被转换为指针,指向其字符数组的首个元素。
在这种情况下,字符串 “abc” 被转换为指向字符 ‘a’ 的指针。而指针的值是内存地址,它可以与数值进行比较。
当我们将指针与整数 0 进行比较时,它实际上是在比较指针的值(即内存地址)是否大于 0。
由于指针的值(字符 ‘a’ 的内存地址)通常大于 0,所以比较表达式 “abc” > 0 的结果为真(1)。
需要注意的是,比较字符串与数值并不是一个常见的做法,因为其结果可能与预期不符。通常情况下,我们会使用字符串与字符串进行比较,而不是将字符串与数值进行比较。
二维数组定义的四种方式:
数据类型 数组名[ 行数 ][ 列数 ];
数据类型 数组名[ 行数 ][ 列数 ] = { {数据1,数据2 } ,{数据3,数据4 } };
数据类型 数组名[ 行数 ][ 列数 ] = { 数据1,数据2,数据3,数据4};
数据类型 数组名[ ][ 列数 ] = { 数据1,数据2,数据3,数据4};
cin跟cout刚好相反,它是一个输入流对象。调用它内部的函数get(),就可以读取键盘的输入;等待键盘输入的时候,窗口就会一直开着。cin.get();这里的键盘输入是以回车作为结束标志的,所以运行看到结果之后,直接敲回车就可以退出了。
const修饰的对象一旦创建就不能改变,所以必须初始化。
跟使用 #define定义宏常量相比,const定义的常量有详细的数据类型,而且会在编译阶段进行安全检查,在运行时才完成替换,所以会更加安全和方便。
计算机可寻址的内存最小单元是8位,也就是一个字节(Byte)
由于char(1个字节)和bool相对特殊,我们先介绍其它四种。C++标准中对它们有最小长度的要求,比如:
一般来讲,float至少有6位有效数字,double至少有15位有效数字。所以浮点类型不仅能表示小数,还可以表示(绝对值)非常大的整数。
变量占用的空间大小只跟类型有关,跟变量具体的值无关。
一个字节能表示的最大数是28 = 256
所以short能表示的数有2^16 = 65536 个,考虑正负,能表示的范围就是-32768 ~ 32767;而int表示的数范围则为 - 2^31 ~ 2^31 - 1
“无符号”版本的类型,只要定义时在类型前加上unsigned就可以
当数值超出了整型能表示的范围,程序本身并不会报错,而是会让数值回到能表示(范围)的最小值;这种情况叫做“数据溢出”(或者“算术溢出”),写程序时一定要避免
比如字母“A”的编码是65,数字字符“0”的编码是48
所以把char当做小整数时,有两种显式的定义方式:signed char 和 unsigned char;至于char定义出来的到底带不带符号,就看编译器的具体实现了。
另外, C++还对字符类型进行了“扩容”,提供了一种“宽字符”类型wchar_t。wchar_t会在底层对应另一种整型(比如short或者int),具体占几个字节要看系统中的实现。
wchar_t会随着具体实现而变化,不够稳定;所以在C++11新标准中,还为Unicode字符集提供了专门的扩展字符类型:char16_t和char32_t,分别长16位和32位。
以0开头的整数表示八进制数;以0x或者0X开头的代表十六进制数
(*n)++ 不同于 *n++ : 一个是指针n代表的值++,另一个是将指针指向下一个位置,然后再对递增后的指针进行解引用操作,获取解引用后的值;还是直接传引用好使,只需要将传入的值n改为&n
用户自定义的数据类型(结构体、结构体数组、共用体、枚举、类)
在C++中,*
、->
和 ++
的优先级如下:
.
(成员访问运算符)*
(解引用):用于访问指针指向的对象。->
(成员访问运算符):用于通过指针访问成员变量或成员函数。++
(递增运算符):用于将变量增加1。
D. 结构中的所有成员都是可以访问的,而联合中所有成员也可以被访问。
在结构(struct)中,每个成员都占据独立的内存空间,可以分别访问每个成员。结构体中的所有成员都可以通过成员访问操作符(.
)来访问。
在联合(union)中,所有成员共享同一块内存空间,每次只能存储其中的一个成员。联合中的所有成员可以通过成员访问操作符(.
)来访问。
通过成员访问操作符(.
)来访问。
在联合(union)中,所有成员共享同一块内存空间,每次只能存储其中的一个成员。联合中的所有成员可以通过成员访问操作符(.
)来访问。
函数的调用可以嵌套,但定义不可嵌套。