变量
int price = 0
int 是变量类型,price 是变量名,=0是赋值,把price的初始值赋为0。
变量是一个保存数据的地方,当我们需要在程序里保存数据时,比如上面的例子中要记录用户输入的价格,就需要一个变量来保存它。用一个变量保存了数据,它才能参加到后面的计算中,比如计算找零。
变量类型
C语言中,所有变量在使用之前必须有定义或声明,所有的变量必须具有确定的数据类型。数据类型表示在变量中可以存放什么类型的数据,变量中也只能存放指定类型的数据,程序运行过程中也不能改变变量的类型。
C99与ANSI C
由图中可以看出:C99可以在程序的任意位置添加变量,而ANSI C只能在程序开头定义好所有变量。C99在ANSI C之后发布,故更加合理。
读取整数
- scanf(“%d”, &price);
- 要求scanf这个函数读入下一个整数,读到的结果赋值给变量price。
- 注意price前面的**&**
变量/常量/直接量
-
变量:顾名思义,因输入值改变的量。
-
常量:不变量,需要定义:const int AMOUNT = 100;
-
直接量:直接卸载程序里的常量,未经定义。例如:100
#include <stdio.h> int main(){ const int AMOUNT = 100; \\const变量用大写来强调 int price = 0; ... }
-
const是一个修饰符,加在int前面,用来给这个变量加上一个const(不变的)属性。这个const属性表示这个变量的值一旦初始化,就不能再修改了。
- int change = AMOUNT - price;
-
如果你试图对常量做修改,把它放在赋值运算符的左边,就会报错。
加法
#include<stdio.h>
int main(){
int a;
int b;
printf("请输入两个数字:");
scanf("%d %d", &a , &b);
printf("%d+%d=%d", a , b , a+b);
return 0;
}
浮点数
- 如何将英尺英寸转化为国际单位?
#include <stdio.h>
int main(){
printf("请输入身高的英尺和英寸:");
int foot;
int inch;//以上两个变量使用double类型的话,下面的scanf内的%d要改成%lf,下面printf内也要用%f,12则不需要改为12.0。更改的代码见下一代码块。
scanf("%d %d",&foot ,&inch );
printf("身高换算为国际单位是:%f", ((foot + inch /12.0)*3.2048));//注意:此处的%f是因为有小数,d只能计算整数,遇到小数会向下取整。12.0和12是完全不同的两个数。
return 0 ;
}
printf("请输入身高的英尺和英寸:");
double foot;
double inch;//double类型表示双精度浮点数,对应的float是单精度浮点数。
scanf("%lf %lf",&foot ,&inch );
printf("身高换算为国际单位是:%f", ((foot + inch /12.0)*3.2048));
- 因为两个整数的运算结果只能是整数。
- 10/3*3 = ?
- 10和10.0在C中是完全不同的两个数
- 浮点数:带小数点的数值。浮点这个词的本意是指小数点是浮动的,是计算机内部表达非整数(分数和无理数)的一种方式。另一种方式叫做定点数。人们借助浮点数这个词来表达所有的带小数点的数。
3*3 = ? - 10和10.0在C中是完全不同的两个数
- 浮点数:带小数点的数值。浮点这个词的本意是指小数点是浮动的,是计算机内部表达非整数(分数和无理数)的一种方式。另一种方式叫做定点数。人们借助浮点数这个词来表达所有的带小数点的数。
- 10.0是浮点数
单精度浮点数(float)与双精度浮点数(double)的区别如下:
(1)在内存中占有的字节数不同
-
单精度浮点数在机内占4个字节
-
双精度浮点数在机内占8个字节
(2)有效数字位数不同
-
单精度浮点数有效数字8位
-
双精度浮点数有效数字16位
(3)所能表示数的范围不同
-
单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38
-
双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308
(4)在程序中处理速度不同
一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快.