北航刷题笔记 其三

北航刷题笔记 其三
fufhaha1.基本数据处理
1.在 printf(“”)输出时,如果有**==/==,==”==,==?==**输出时,前面要加上转义字符\才能正确输出。
2.int 的数做除法运算时,一般都往 0 取整(向下),如果要向上取整,可以自己做一下 if 判断(要注意什么时候刚好除完,什么时候是小数结果的情况)
3.int-%d ,double-%lf ,long long-%lld,float-%f,unsigned long long-%llu==(这个比 longlong 的范围还要大)==
4.数据类型的转换
1.赋值时的类型转换:赋值号**==右边表达式的类型==**会自动转换为赋值号==左边变量类型==
2.算术转换:
如果在运算时有多个数据类型,那么他会自动**==由低往高==**转换
如:算术表达式中**==普通整数( int )==和==无符号整数( unsigned )==混合使用,则==普通整数将自动转换成无符号整数。==**
如图:
5.宏定义和 const:
1.#define 宏定义:(==宏定义的末尾不用加分号;==)
#define 定义的只是个常量,不带类型,只是用来做**==文本的替换==。如:例“#define PI 3.14159”,当程序进行编译的时候,编译器首先会将#define PI 3.14159 之后所有代码中的 PI 全部换成 3.14159,然后再进行编译。#define 常量的生命周期停止于编译阶段,它存在于程序的代码段。宏定义是纯粹的文字替换,编译器==不进行类型检查==**。
可以**==使用带参数的宏==,如==“#define max(a, b) a > b ? a : b”==**
2.const:
const 可以放在任何变量定义之前,说明变量是只读的(不能修改的),这样的变量又称为常量变量(仍然是变量,有变量的属性,相当于常量,但不是常量)。即 const 定义的常数是变量,也有数据类型,存在于程序的数据段,并分配了空间。编译器可以对 const 常量进行类型的安全检查
6.如果要求一个数的每一位,可以用**while(n!=0){}**来做(因为 int 是向下 0 取整)
7.常见的 ascll 码:
在 printf
中,%c
和 %d
对同一个变量 ch
输出不同的结果是因为它们分别以不同的方式处理这个变量:(取决于要输出的数的数据类型)
%c
:将变量 作为字符 输出。它会把变量的值当作字符来解释,并输出该字符对应的符号(例如 ASCII 字符)。- **
%d
**:将变量 作为整数 输出。它会输出该字符的 ASCII 码,即该字符在计算机中的整数表示。
'a'
到 'z'
的 ASCII 码值范围是 97 到 122。
'A'
到 'Z'
的 ASCII 码值范围是 65 到 90。
1 | for(int i=0;i<7;++i){ |
8.位运算:
**==a >> i==:将整数 a 向右移动 i 位。这个操作会将 a 的==二进制表示中的每一位右移 i 位==**,并在左侧填充 0。例如,a = 13(二进制为 0000000000001101)如果 i = 2,那么 a >> 2 就是将 13 的二进制右移 2 位,结果变为 0000000000000011,也就是 3。
&
是**==按位与运算符==**,它比较两个二进制数的每一位,并按照以下规则输出:
**如果两个对应的二进制位都是 1
**,则结果为 1
;
**如果两个对应的二进制位中有一个是 0
**,则结果为 0
。
1 | a = 1111 (15) |
**==a << i==**是左移运算符
==按位或(|
)== 是将两个二进制数的每一位进行比较,若两位中**==有一个为 1
,结果就为 1
,否则为 0
==。**