C++入门:变量类型
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
变量其实只不过是程序可操作的存储区的名称。C++ 中每个变量都有指定的类型类型决定了变量存储的大小和布局该范围内的值都可以存储在内存中运算符可应用于变量上。
变量的类型间是可以互相转换的转换又分为自动转换和强制转换。
自动转换规则
1、若参与运算量的类型不同则先转换成同一类型然后进行运算。
2、转换按数据长度增加的方向进行以保证精度不降低。如int型和long型运算时先把int量转成long型后再进行运算。 a、若两种类型的字节数不同转换成字节数高的类型 b、若两种类型的字节数相同且一种有符号一种无符号则转换成无符号类型
3、所有的浮点运算都是以双精度进行的即使仅含float单精度量运算的表达式也要先转换成double型再作运算。
4、char型和short型参与运算时必须先转换成int型。
5、在赋值运算中赋值号两边量的数据类型不同时赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度比左边长时将丢失一部分数据这样会降低精度:
int a=1;
double b=2.5;
a=b;
cout << a; //输出为 2丢失小数部分
int a = 1;
double b = 2.1;
cout << "a + b = " << a + b << endl; //输出为a + b = 3.1
强制转换规则
强制类型转换是通过类型转换运算来实现的。其一般形式为类型说明符表达式其功能是把表达式的运算结果强制转换成类型说明符所表示的类型
int a = 1;
double b = 2.1;
cout << "a + b = " << a + (int)b << endl; //输出为a + b = 3
现在才算理解声明和定义的区别了
定义包含了声明但是声明不包含定义如
int a = 0; //定义并声明了变量 a
extern int a; //只是声明了有一个变量 a 存在具体 a 在哪定义的需要编译器编译的时候去找。
函数也是类似定义的时候同时声明。但如果只是声明编译器只知道有这么个函数具体函数怎么定义的要编译器去找。
void fun1(); //函数声明
void fun1(){ //函数定义
cout<<"fun1"<<endl;
}
变量左值可以出现在等式的左边或者右边。出现在左边可以用来判锻NULL以防出现逻辑错误
#include "stdafx.h"
int *a = NULL;
int main()
{
if (a = NULL)//赋值语句并非判断语句
{
return false;
}
if (NULL = a)//!!!!ERROR 此处在程序编译阶段不通过“=”右边不能为变量名
{
return false;
}
if (a == NULL)//可行 判断指针a是否为空
{
return false;
}
if (NULL == a)//可行 判断指针a是否为空。在实际项目中为了防止将“==”误写作“=”推荐讲变量名写在右侧编译器可以帮助寻找错误
{
return false;
}
return 0;
}
C/C++ 编译 cpp 文件是从上往下编译所以 main 函数里面调用其他函数时如果其他函数在 main 函数的下面则要在 main 函数上面先声明这个函数。
或者把 main 函数放在最下面这个不仅限于 main 函数其他函数的调用都是如此。被调用的函数要在调用的函数之前声明。