C语言知识小计

C语言知识小计

C语言知识小计

基础——指针前

1
2
3
4
5
6
7
#include <stdio.h>
int main()
{
/* 我的第一个 C 程序 */
printf("Hello, World! \n");
return 0;
}

以上代码为例基础解析

  • 所有的 C 语言程序都需要包含 main() 函数。 代码从 main() 函数开始执行。
  • printf() 用于格式化输出到屏幕。printf() 函数在 “stdio.h” 头文件中声明。
  • stdio.h 是一个头文件 (标准输入输出头文件) , #include 是一个预处理命令,用来引入头文件。 当编译器遇到 printf() 函数时,如果没有找到 stdio.h 头文件,会发生编译错误。
  • return 0; 语句用于表示退出程序。

%占位符的用法 如: printf(“你的名字是 %s , 你的年龄是 %d”,name,age);

C语言中的字符串结束标志是\0

printf的各种输出方式

1
2
3
4
5
6
7
8
9
int main() {
printf("打印五个字符:%c %c %c %c %c \n", 119, 114, 111, 111, 108);
printf("前面用 填充:%10d\n" , 2015);
printf("前面用 填充:%010d\n" , 2015);
printf("右对齐,保留两位 %10.2f\n" ,3.14 );
printf("左对齐,保留3位 %-10.3f\n" ,3.14 );
printf("右对齐,指数形式 %10e\n" ,520000.0 );
printf("左对齐,指数形式 %-10E\n" , 520000.0);
}

效果:批注 2020-06-15 110720

printf 函数使用 %c 打印 char 类型的字符,使用 %d 和 %u 则打印其对应的 ASCII 码(其中 %d 打印带符号数,%u 打印无符号数)。signed char 和 unsigned char 使用 hh 说明其长度。

数据类型:

c中的布尔值是_Bool

一个字节等于八个比特位(1Byte == 8bit),但在c语言中并没有具体定义一个字节等于多少比特位,一个字节被定义为连续比特位,具体大小由实现环境决定。不过通常我们约定俗成是一个字节等于八个比特位。

*C 标准只规定一个数据类型的具体尺寸(其他数据类型都是规定相对范围),那就是char 字符型,C 标准只规定 char 类型占一个字节的空间。 *

整型变量: C 标准规定 short <= int <= long <= long long

C 标准规范存储空间最小的是 _Bool 因为只需要容纳0和1两个数即可

为了得到某个类型或某个变量在特定平台上的准确大小,您可以使用 sizeof 运算符。表达式 sizeof(type) 得到对象或类型的存储字节大小。

由于默认 int 是 signed 的,即带符号位的整数(可以表示负数),需要用一半的存储空间来存放负数;而 unsigned int 则是完全用于存放正数,因此 unsigned int 能保存2倍于有符号类型的正整数数据。

用 64 位来存放 long long 的值 ,取unsigned long long,它可以表示的最大值是2^64 -1,所以可以最大可以存放一个20位的十进制整数

进制转换举栗

请写出以下二进制数(补码)对应的十进制数。
A. 0000 1100 -> 2^3 + 2^2 = 8 + 4 = 12
B. 1100 1100 –> -2^7 + 2^6 + 2^3 + 2^2 = -128 + 64 + 8 + 4 = -52
C. 1010 1010 –> -2^7 + 2^5 + 2^3 + 2 = -128 + 32 + 8 + 2 = -86
D. 1111 1111 -> -2^7 + 2^6 + 2^5 + 2^4 + 2^3 + 2^2 + 2 + 1 = -1
E. 1000 0000 –> -2^7 = -128

带符号数在内存中以补码的形式保存,正数的补码是其二进制本身,负数则通过对其绝对值的二进制取反加一计算得到(补码)

-8 -> 1000 1000 –> 1111 0111 –> 1111 1000

-126 -> -128 + 2 -> 1000 0000 + 0000 0010 -> 1000 0010

对于逻辑与和逻辑或采用短路求值方式。

字符与字符串

C语言中,最小的整数类型是char。(虽然 char 是字符类型,但它事实上是用于存放整数,因此属于整数类型。)

标准 ASCII 字符表使用 7 位二进制数来表示所有的大写和小写字母,数字 0 到 9、标点符号,以及在美式英语中使用的特殊控制字符;数字 09 对应的十六进制 ASCII 值分别是 3039。

大写字母对应的 ASCII 值第 6 位置 1 则变成对应的小写字母,反之亦然。例如:大写字母 A 的二进制 ASCII 值是 0100 0001,对应的小写字母 a 的二进制则是 0110 0001。此规则适用于所有大小写字母的相互转换

一个字符串在内存中占有多少字节? 字符串的长度加一,因为字符串最后需要加一个‘\0’字符表示结束

如果用char name[10] = “xiaomu”; 定义字符串;则其变量name在内存中的储存形式是:’x’,’i’,’a’,’o’,’m’,’u’,’\0’,’\0’,’\0’,’\0’ 声明了10个字节但是只需7个(包括结尾\0),因此多余的空间用‘\0’进行填充。如果

scanf_s()

教材中的scanf(),在目前Visual Studio版本中已经弃用;

scanf_s() 的功能虽然与scanf() 相同,但却比 scanf() 安全,因为 scanf()在读取字符串时不检查边界,可能会造成内存泄露”;而scanf_s() 在读取数据的时候会检查边界,如果输入的数据达到了所请求的内存空间,则不会再读入数据。

运算符

求余运算符两边要求均为整形

赋值运算符的结合性是自右向左的;

为什么a = 0 && 1 = b;编译会报错? 少打了一个等号(=),使得表达式先计算逻辑运算符的值为 0 && 1 结果为假(0),便出现了 0 = b 这样错误的赋值语句(我们无法给一个常数赋值)

count != 0 && sum/count 该表达式使用逻辑与(&&)来确保 sum/count 的除数不为 0。

# 推荐文章
  1.vpy加密视频破解转mp4-JAVA代码实现
  2.x715quan逆向协议分析
  3.20200516 每日记录
  4.AutoGeneratorCode
  5.C语言知识小计

评论


:D 一言句子获取中...

加载中,最新评论有1分钟延迟...