目录
一. 变量
1.1 概念
变量指的是在程序运行过程中,值允许发生改变的量(变量用来保存数据)
1.2 定义变量的格式
定义变量:
(存储类型)数据类型 变量名
存储类型:auto,regisiter,extern,static,const,volatile
局部变量一般不写存储类型默认为 auto
补充:变量名应符合规范
1.3 变量占用内存空间的大小
数据类型决定,char int float double
1.4 变量的赋值和初始化
定义变量的时候给变量赋一个初值,就是变量的初始化
比如:
int a = 10; (不是a=10,而是把10给a,可以把变量想象成一个空间)
也可以用一个表达式来给变量赋值:
int a = 1;
int b = a*2;
同样,变量之间也可以运算
int a = 1;
int b = a*2;
int c = a + b;
如果定义的变量没有初始化,那么变量存储的值是一个随机值
1.5 注意事项
#include <stdio.h>
int main(int argc, const char *argv[])
{
//在同一作用域内不允许定义重名的变量
//作用域 就是最近的 {}
int a = 10;
//int a = 20;//错误的
//一行可以定义多个变量 中间用 逗号分隔
int m,n = 10,k; //mk是随机值 n是10
printf("m = %d, n = %d, k = %d\n", m, n, k);
//变量如果没有定义 不能直接使用
value = 100;
return 0;
}
二. 强制类型转换
2.1 概念
所谓的强制类型转换,简称强转,就是在某次运算中通过某种方式将变量的类型转换成新的类型
来参与本次运算。变量自身的类型不会发生改变。分为显式强转和隐式强转。
2.2 显示强制转换
(类型)变量名
#include <stdio.h>
int main(int argc, const char *argv[])
{
int m = 5;
int n = 2;
int ret = m/n;
printf("ret = %d\n", ret);//2
float ret2 = m/n;
printf("ret2 = %f\n", ret2);//2.000000
float ret3 = (float)m/(float)n;
printf("ret3 = %f\n", ret3);//2.500000
//m和n本身的类型没有变
printf("%d %d\n", m, n);
return 0;
}
注意:
强制类型转换,是不安全的,要谨慎使用。
小的类型转大的类型一般没问题,
但是大的类型转小的类型就可能出现数据的截断和丢失。
2.3 隐形强制转换
取决于编译器的严谨程度,如果编译器认为可以,就允许使用,编译器认为不行,