变量
实现变量的需要:
1.有地方放输入的数字;
2.有办法输入数字;
3.输入的数字能参与计算。
(输入行为是以行为单位进行的,按下回车键就是行的结束,按下回车键时,程序不会读到任何东西)
int price=0;
变量的名字是price,类型是int,初始值是0
变量是一个保存数据的地方
变量定义
变量定义一般形式:
<类型名称><变量名称>;
int price;
int amount;
int price,amount;(int类型,price 和amount都是变量)
变量的名字
变量需要名字,变量的名字是一种“标识符”(用来标识这个和那个的不同的名字)
标识符有构造规则:只能由字母、数字和下划线组成,数字不可以在一个位置上,C语言的关键字(保留字)不可以做标识符
C语言保留字
auto,break,case,char,const,
continue,default,do,double,
else,enum,extern,float,for,goto,
if,int,long,register,return,short,
signed,sizeof,static,struct,switch,
typedef,union,unsigned,void,
volatile,while,inline,restrict
附值和初始化
int price=0;
变量的名字是price,类型是int,初始值是0
price=0是一个式子,“=”是一个附值运算符,表示将“=”右边的值赋给左边的变量
附值
和数学不同,a=b在数学表示关系,即a和b的值一样;在程序中,a=b表示计算机做一个动作,将b的值赋给a。
关系是静态的,动作是动态的。数学中,a=b和b=a是一样的,而在程序中,两者意思是完全相反的。
初始化
变量定义的时候立即附值,就是初始化。C没有强制所有变量都需要初始化,但是所有变量在被使用的时候都要被附值。(变量在内存中,没有初始化,内存中的数据就是变量的值)
变量初始化
<类型名称><变量名称>=<初始值>
int price=0;
int amount=100;
组合变量定义,可以在定义中单独给单个变量附初值,如:
int price=0,amount=100;
变量类型
int price=0;
变量的名字是price,类型是int,初始值是0
C是有类型的语言,所有的变量在使用前必须定义或申明,所有的变量必须在有确定的数据类型。(数据类型指变量中可以存放什么样的数据,变量中只能存放指定类型的数据,程序运行过程中无法改变变量的类型)读整数
scanf("%d",&price);
要求scanf这个函数读入下一个整数,读到结果附值给变量price
小心price前面的&
常量
固定不变的数,是常熟。直接写在程序里的数字,称作直接量(literal)
更好的编程方式,是定义一个常量:
const int AMOUNT=100;(方便理解程序里的数字含义,和程序修改)
const
const是一个修饰符,加在int的前面,用来给这个变量加上一个const(不变的)的属性。这个const的属性表示这个变量的值一旦初始化,就不能再修改了。
tip
程序要求读入多个数字时,可以再一行输入,中间用空格分开, 也可以再多行输入
在scanf的格式字符串中有几个%d,它就等待用户输入一个整数,字符串后面也需要对应有那么多个整数
#include <stdio.h>
int main()
{
int a;int b;
printf("请输入两个整数:");
scanf("%d %d", &a, &b);
printf("%d + %d = %d\n", a, b, a + b);
return 0;
}
浮点数
带小数点的数值,浮点即小数点数浮动的,这是计算机内部表达非整数(包含分数和无理数)的一种方式。
另一种数叫做定点数,但在C中没有遇到。
在C语言中,两个整数的运算结果结果只能时整数(不带小数点的数)
10和10.0在C中是完全不同的数
10.0是浮点数
计算身高的程序
#include <stdio.h>
int main()
{
printf("请分别输入身高的英尺和英寸,""如输入\"5 7\"表示5英尺7英寸:");
double
foot;double
inch;
scanf("%lf
%lf", &foot, &inch);
printf("身高是%f米。\n", ((foot + inch /12)
* 0.3048));
return 0;
}
改进
第一种把12改称12.0
当浮点数和整数放在一起运算时,C会将整数转换成浮点数,然后进行浮点数的运算。
double
inch是定义为int类型的变量,如果把int换成double,我们就把它改为double类型的浮点变量了。
double意思为“双”,它本来是“双精度浮点数”的第一个单词,用来表示浮点数类型。
除了double,还有float(意思为浮点)表示单精度浮点数。
第二种把int改为double
输出也要相应的改为“%lf”
数据类型
整数
int
printf("%d",...)
scanf("%d",...)
带小数点的数
double
printf("%d",...)
scanf("%d",...)
整数
整数类型不能表达有小数部分的数,整数和整数的运算结果还是整数。计算机里会有纯粹的整数这种奇怪的东西,是应为整数运算比较快,而且占地方也小。其实人们日常生活中大量做的还是纯粹整数的计算,所以整数的用处还是很大的。