C语言概述
简单的c程序示例
#include<stdio.h>
int main(void) {
int num
;
num
= 123;
printf("The number is %d", num
);
getchar();
return 0;
}
示例解释
#include<stdio.h>相当于把stdio.h文件中的所有内容输入该行,实际上是一种复制粘贴操作#include是C的一条预处理指令,C编译器在编译前会对源代码做一些准备工作,即预处理通常在C程序顶部的信息集合称之为头文件,一般包含了编译器创建最终可执行程序要用到的信息C程序一定从main函数开始执行
声明
int num;这行代码叫做声明,说明在函数中有个变量名称为num,其类型是int。int是关键字,num是标识符c99 c11支持变量放在任何地方
#include<stdio.h>
int main(void) {
int num
= 123;
printf("The number is %d\n", num
);
int num1
= 90;
printf("%d", num1
);
return 0;
}
变量命名
给变量命令应该使用有意义的名字建议变量名不要太长C语言是通过赋值运算符而不是赋值语句完成赋值操作
多个函数
#include<stdio.h>
void butler(void);
int main(void) {
printf("I Wil summon the butler function. \n");
butler();
printf("Yes. Bring me some tea");
getchar();
return 0;
}
void butler(void) {
printf("You rang, sir?\n");
}
butler()函数在程序中出现了3次,第一次是函数原型,告诉编译器将要使用该函数。第二次以调用的形势出现在函数main()中。最后则是自己函数本身的源代码早起的c语言支持更为简单的函数声明,只需要指定返回类型,不用描述参数,但是并不建议使用这种写法
void butler();
何时调用butler()取决于它在main()中被调用的位置,而不是他定义在文件中的位置C标准建议,要为程序中用到的所有函数提供函数原型,printf()函数原型在stdio.h头文件中
数据和C
浮点数
计算机把浮点数分成小数部分和指数部分来表示,而且分开存储这两个部分浮点数表示的范围比整数大对于一些算术运算,浮点数损失的精度更多因为在任何去区间内都存在无穷多个数,所以计算机的浮点数不可能表示所有值,一般浮点数只是实际值的近似值。例如,7.0可能被存储为6.9999999过去浮点数运算比整数慢,但现在很多浮点数都有浮点数处理器,缩小了速度差距
int类型
int类型是有符号整形,即int类型必须是正整数,负整数,或者零,其取值范围根据计算机系统不同数据声明后,可以直接赋值,也可以通过函数赋值
printf("%d is % %d", 15);
printf函数的参数数目不定,所以当你遗漏时,编译器也爱莫能助
八进制和十六进制
通常C语言假定整形常量是十进制数使用不同的进制是为了方便,不会影响数的存储方式。因为计算机内部都以二进制进行编码
显示八进制和十六进制
如果需要在八进制和十六进制前显示0, 0x前缀,需要在转换说明前加入#
#include<stdio.h>
int main(void) {
int x
= 100;
printf("octal = %o; hex = %x \n", x
, x
);
printf("octal = %#o; hex = %#x \n", x
, x
);
getchar();
return 0;
}
其他整数类型
unsigned int 或者unsigned只能用于非负值场合,但是可以表示更大的数任何有符号类型前面加入关键字signed,可以强调使用有符号类型的意图
char类型
char类型用于存储字符,但是从技术层面看,char是整数类型,因为实际上存储的就是整数,因为计算机使用特定的数字存储特定的字符
打印字符
#include<stdio.h>
int main(void) {
char ch
;
printf("Please input a character\n");
scanf("%c", &ch
);
printf("The code for %c is %d\n", ch
, ch
);
getchar();
return 0;
}