北航刷题笔记 其三

1.基本数据处理

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 输出不同的结果是因为它们分别以不同的方式处理这个变量:(取决于要输出的数的数据类型)

  1. %c:将变量 作为字符 输出。它会把变量的值当作字符来解释,并输出该字符对应的符号(例如 ASCII 字符)
  2. **%d**:将变量 作为整数 输出。它会输出该字符的 ASCII 码,即该字符在计算机中的整数表示。

'a''z' 的 ASCII 码值范围是 97 到 122。

'A''Z' 的 ASCII 码值范围是 65 到 90。

1
2
3
for(int i=0;i<7;++i){
s[i]=97+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
2
3
4
  a = 1111  (15)
b = 0111 (7)
a & b = 0111 (7)

**==a << i==**是左移运算符

==按位或(|== 是将两个二进制数的每一位进行比较,若两位中**==有一个为 1,结果就为 1,否则为 0==。**