C语言新手注意事项

格式占位符:

%a,%A 读入一个浮点值(仅C99有效)

%c 读入一个字符

%d 读入十进制整数

%i 读入十进制,八进制,十六进制整数

%o 读入八进制整数

%x,%X 读入十六进制整数

%s 读入一个字符串,遇空格、制表符或换行符结束。

%f,%F,%e,%E,%g,%G 用来输入实数,可以用小数形式或指数形式输入。

%p 读入一个指针

%u 读入一个无符号十进制整数

%n 至此已读入值的等价字符数

%[] 扫描字符集合

%% 读%符号

C语言数据类型:

类型 存储大小 值范围
char 1 byte -128 到 127 或 0 到 255
unsigned char 1 byte 0 到 255
signed char 1 byte -128 到 127
int 2 或 4 bytes -32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647
unsigned int 2 或 4 bytes 0 到 65,535 或 0 到 4,294,967,295
short 2 bytes -32,768 到 32,767
unsigned short 2 bytes 0 到 65,535
long 4 bytes -2,147,483,648 到 2,147,483,647
unsigned long 4 bytes 0 到 4,294,967,295

作用域问题:

#include <stdio.h>
int main(){
	for(int count = 0;count < 10;++count){ 
		printf("第%d次输出!", count);
		printf("洛冰河最萌!\n");
	}
	printf("%d",count); 
	return 0;
} 

如上代码,整型count在for循环语句中定义,那么它仅在此语句块(即花括号)内定义语句下方可用,一旦超出此语句块,此变量失效,无法通过编译。

#include <stdio.h>
int main(){
	int count = 1;
	for(int count = 0;count < 10;++count){ 
		printf("第%d次输出!", count);
		printf("洛冰河最萌!\n");
	}
	printf("%d",count); 
	return 0;
} 

那么在for语句块前再定义一次count呢,我在整个程序中定义了两次count变量。那么在for语句块中定义的新count可视为与前面count完全不同的一个新变量,该变量初始化为0,循环后为10,离开循环后消失,后方的printf语句输出的count变量仍是最开始定义的为1的count。

数组溢出:

 

文章参考:极客学院C语言教程中文版

分享