第一个程序快速概要
#include
改行告诉编译器把stdio.h中的函数在当前程序中。stdio.h是C编译器软件包的标准部分,它提供键盘输入和屏幕输出的支持
int main(void) ←函数名
C程序包含一个或多个函数,他们是C程序的基本模块。圆括号表明main()是一个函数名。int表明main( )函数返回一个整数,void表明main( )不带任何参数
/*一个简单的C程序*/ ←注释
注释在/*和*/两个符号之间,这些注释可以提高程序的可读性。注释只是为了帮助读者理解程序,编译器会忽略他们。
{ ←函数体开始
左花括号表示函数的定义开始,右花括号(})表示函数定义结束。
int num; ←声明
该声明表明,将使用一个名为num的变量,而且num是int(整数)类型。
num=1; ←赋值表达式语句
语句num=1;把1赋给名为num 的变量。
printf("I am a simple"); ←调用一个函数
该语句的使用printf( )函数,在屏幕上显示I am a simple, 光标停留在同一行。printf( )是标准的C库函数。在程序中使用函数叫作调用函数。
printf("computer.\n"); ←调用另一个文件
接下来调用这个printf( )函数在上条语句打印出来的内容后面加上“computer”。代码\n告诉计算机另起一行,即把光标移至下一行。
printf("My favorite number is %d because it is first.\n“, num);
最后调用的printf( )把num的值(1)内嵌在用双引号括起来的内容中的一并打印。%d告诉计算机以何种形式输出num的值,打印在何处。
return 0; ←return语句
C函数可以给调用方提供(或返回)一个数。目前,可暂时把该行看作是结束main()函数的要求。
} ←结束
必须以右花括号表示程序结束。
命名
可以用小写字母,大写字母,下划线来命名。而且,名称第1个字符必须是字符或下划线,不能是数字。C语言的名称区分分大小写,即把一个字母的大写和小写视为两个不同的字符。因此,stars和Stars,STARS都不同。
C语言的基本数据类型
int类型:可以使用printf()函数打印int类型的值。%d指明了在一行中打印整数的位置。%d称为转化说明,它指定了printf()应使用什么格式来显示一个值。格式化字符串中的每个%d都与待打印变量列表中相应的int值匹配。作为程序员要确保转换说明的数量与待打印的数量相同。
八进制和十六进制:0x或0X前缀表示十六进制,所以十进制数16表示成十六进制是0x10或0X10。0前缀表示八进制,例如十进制数16表示成八进制是020。以十进制显示数字,使用%d;以八进制显示数字,使用%o;以十六进制显示数字,使用%x。另外要显示各进制数的前缀0、0x、0X,必须分别使用%#o、%#x、%#X。
其他整数类型
short int类型(短整型):占用的存储空间可能比int类型少,常用于较小的数值的场合节省空间。与int类似,short是有符号类型的。
long int或long(长整型):占用的存储空间可能比int类型多,适用于较大数值的场合。与int类似,long是有符号类型。
long long int或long long(C99标准加入):占用的存储间可能比long多,适用于更大数值的场合。该类型至少占64位。与int类似,long long 是有符号类型。
unsigned int 或unsigned:只用于非负值的场合。这种类型与有符号类型表示的范围不同。例如:16位的unsigned int 允许的取值范围是0~65535,而不是-32768~32768。用于表示正负号的位现在用于表示另一个二进制位,所以无符号整型可以表示更大的数。
在个人计算机中最常见的设置是,long long 占64位,long 占32位,short占16位,int占16位或32位。
要把较小的常量作为long类型对待,可以在值末尾加上l或L后缀。因此,在int为16位、long为32位系统中,会把7作为16为储存,把7L作为32为储存。l或L后缀也可用于八进制和十六进制整数如020L和0x10L。
类似的在支持long long类型的系统中,也可以使用ll或LL后缀来表示long long 类型的值,如3LL。另外,u或U后缀表示unsigned long long,如5ull,10LLU,6LLU或9Ull。
打印unsigned int类型的值,使用%u转换说明;打印long类型的值,使用%ld转换说明。
C语言的多种printf()格式。对于short类型,可以呀使用h前缀。%hd表示以十进制显示short类型的整数,%ho表示以八进制显示short类型的整数。
char类型:char类型用于储存字符,但是从技术层面上看,char还是整数类型,因为char类似实际上储存的是整数而不是字符。如果把一个字符常量初始化为一个字母'A',不必背下ASCII码,用计算机语言很容易做到,在C语言中,用单引号括起来的单个字符被称为字符常量。编译器发现'A',就会将其转换成相应的代码值。单引号必不可少。如果省略单引号,编译器认为A是一个变量名;如果把A用双引号括起来,编译器认为"A"是一个字符串。C语言系统中讲字符常量视为int类型而非char类型。
非打印字符
第一种方法前边介绍过--用ASCII码。例如,蜂鸣字符的ASCII码是7,因此可以这样写
char beep=7;
第二种方法是,使用特殊的符号序列表示一些特殊的字符。这些符号序列叫作转义序列
转义序列 含义
\a 报警(ANSIC)
\b 退格
\f 换页
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\\ 反斜杠(\)
\' 单引号
\" 双引号
\? 问号
\0oo 八进制值(oo必须是有效的八进制数)
\xhh 十六进制(hh必须是有效的十六进制数)
可移植类型
stdint.h和inttypes.h
C语言提供了许多有用的整数类型。但是,某些类型名在不同系统中的功能不一样。C99新增了两个头文件stdint.h和inttypes.h,以确保C语言的类型在各系统中的功能相同。
C语言为现有类型创建了更多类型名。这些新的类型名定义在stdint.h头文件中。例如int32_t表示32位的有符号整数类型
一些类型名保证所表示的类型一定是至少有指定宽度的最小整数类型。这组类型集合被称为最小宽度类型,例如,int_least8_t是可容纳8位有符号整数值的类型中宽度最小的类型的一个别名。
有些程序员更关心的是速度而非空间,因此,C99和C11定义了一组可使计算达到最快的类型集合。这种类型集合被称为最快最小宽度类型。例如,Int_fast8_t被定义为系统中对8位有符号值而言运算最快的整数类型的别名。
float、double和long double(使用较少)
C标准规定,float类型必须是至少能表示6位有效数字,且取值至少是十的负三十七次方到十的三十七次方。前一项规定float类型必须能够表示33.333333的前六位数字,而不是精确到小数点后6位数字。
C语言提供另一种浮点类型是double(意为双精度)。double类型和float类型的最小取值范围都相同,但至少必须能表示十位有效数字。
在代码中,可以用多种形式书写浮点型常量。浮点型常量的基本形式是:有符号的数字(包括小数点)后面紧跟着e或E,最后是一个有符号数表示10的指数。【不要在浮点型常量中间加空格】