数据类型
接下来我们就开始进行这一章的知识点讲解,配合代码编写深入掌握 C 语言的输入输出、常量变量以及包含整数型、字符、字符串、浮点数等在内的数据类型。
基本的输入输出函数
首先我们先举一个例子 3-1,下面我们建立一个程序 3-1.c,输入以下代码:
输入以下代码:
//实现a+b
#include<stdio.h>
int main(){
int a,b,c;
printf("这是一个两数相加的程序\n");
printf("请输入a的值");
scanf("%d",&a);
printf("\n");
printf("请输入b的值");
scanf("%d",&b);
c=a+b;
printf("c的值为%d",c);
return 0;
}
在终端输入以下命令,编译并运行:
gcc -o 3-1 3-1.c
./3-1
如果该程序成功运行,首先终端会显示 Please enter a value:
提示大家输入 a 的值,大家写一个整数(注意是整数),然后终端会显示 Please enter b value:
提示大家输入 b 的值,之后将会运算 c = a + b 的结果。如下图输入 4 和 5 将计算出 c 的值为 9:
接下来,我们依托这个程序讲解几个知识点,之后再做分析。
格式输出函数 printf()
一般形式:printf(格式控制,输出表列)。例如:printf("%d,%d",a,b);
括号内包含两个部分:
(1)格式控制是用双引号括起来的一个字符串,称“转换控制字符串”,简称“格式字符串”,它包括两个信息:
- 格式声明:格式声明由 % 和格式字符组成,如 %d (%d 代表输出整数,%f 代表输出实数),它的作用是将输出的数据转换为指定的格式然后输出。格式声明总是由 % 字符开始。
- 普通字符:普通字符即在需要输出时原样输出的字符。例如上例中的
printf("Please enter a value
:
");
中的Please enter a value:
即为原样输出。
(2)输出表列是程序需要输出的数据。看下面例子:
printf("I love %d and %d",x,s);
第一个 %d
对应的是 x 的值,第二个 %d
对应的是 s 的值。I love
和 and
(注意这里包括空格)都是普通字符会原样输出。
假如 x 的值是 3,s 的值是 4,这条语句将会输出 I love 3 and 4
。
格式输入函数 scanf()
一般形式:scanf(格式控制,地址表列)。格式控制的含义同 printf()
函数。“地址表列”是由若干地址组成的表列,可以是变量的地址。
看下面的例子:
scanf("a=%d,b=%d",&a,&b);
在格式字符串中除了有格式声明的 %d
以外,其它普通字符在赋值时需要原样输入(如“ a= ”,“ b= ”和“,”),假如给 a 和 b 分别赋值 5 和 6,将输入 a=5,b=6
。 建议大家不要在格式控制中加过多的普通字符,否则会发生不可预料的 BUG。
注意:scanf() 函数中的表列是地址表列。 scanf("a=%d,b=%d",&a,&b);
中 a 和 b 前面的 & 不能省掉,这一点要和 printf 作区分。
printf()
函数和 scanf()
函数我们会在后续深入讲解。
注释
位于 /* */
中的和 //
后面的内容为注释,用来对代码进行说明,注释在编译时会被自动忽略。
3-1.c 是一个简单的计算程序,通过定义变量让用户可以自由设定 a 和 b 的值,之后通过 c = a + b;
这条语句实现把 a 和 b 的和计算出来并赋值给 c。
常量
顾名思义,值不能被改变的量称为常量。如 5、7、19 或者 0.54、4.33 这些值,常见的常量分为以下类型:
整型常量
如 0、100、-30 等整数都是整型常量。
实型常量
就是我们通常所说的小数,如 12.34, -5.45, 143.342 等,小数还可以用指数形式表现,如 32.23e3(表示 32.23*10^3),-323.34e-6(表示 -323.34*10^-6),由于计算机无法表示上角和下角,所以规定以字母 e 或者 E 代表以 10 为底的指数。
注意:e 或者 E 之前必须有数字,且 e 或者 E 后面必须为整数,不能是 e3 或者 12e4.1 这种形式。
字符常量,字符常量有两种
- 普通字符:用单引号括起来的一个字符,如 'a'、'E'、'%'、'3'。不能写成 'ab'、'12'。字符常量只能是一个字符,不包括单引号。
- 转义字符:除了以上形式的字符常量外,C 语言还允许用一种特殊形式的字符常量,就是以字符 \ 开头的字符序列,比如我们本节课的 3-1.c 中,\n<