概述
变量是任何一种语言中写程序都必须的,变量存储在内存中,要么在栈上,要么在heap上。C++是一个比较宽松的语言,在使用变量的时候,并没有很多的规则。 而C++中变量的区别主要就是在内存中所占用空间的大小。
C++中内置的变量类型有char, short, int, long, long long, float, double,bool
int类型的范围取决于编译器和具体的机器类型。 大多数情况下,int类型是使用4个字节存储,相对应的,作为有类型的数据类型,int类型的数据的范围从-2b~2b,也即-2^31~2^31。因为是有类型的,所以最高位用于标识数据的正负性。
如果不想浪费一位来表示正负性,那么可以使用unsigned int。对于char, short, int, long, long long, ,都可以在前面添加unsigned,来表示无符号数。
关于char,代表的就是character,字符,通常是一个字节大小;short是两个字节,long一般也是4个字节,long long 8个字节。在前面提到过,各种类型的区别主要是存放它们的内存的大小不同。那么怎么理解
char variable = 'a';
以及
char variable = 50;
这个的区别并没有很大,因为在内存中存储的时候,最终字符a被表示为了数字97。
#include <iostream>
int main() {
int v1 = 'a';
char v2 = 'a';
int V1 = 97;
char V2 = 97;
std::cout << v1 << " " << v2<< std::endl;
std::cout << V1 << " " << V2 << std::endl;
std::cin.get();
}
运行结果如下:
从上面的例子中可以作为证明,char类型和int类型从存储上而言,都是一样的,也就是都是数字。那为什么要进行区分呢?这里主要是因为,作为程序员,确实有char这种数据类型的需要,那么,如果是char类型的话,std::cout会注意将它打印成字符,而Int类型,则就是数字。
如果想用一个小数,譬如5.5,那么可以使用float和double两种数据类型。关于float,如果使用下面的代码,那么v1实际上是double。
float v1 = 5.5;
如果想要进行区分可以在5.5之后附加上f。
float和double的区别是,float是四个字节,而double是8个字节。
关于bool类型:
#include <iostream>
int main() {
bool v1 = true;
bool v2 = false;
std::cout << v1 << std::endl << v2 << std::endl;
std::cin.get();
}
运行结果:
在C++中,0就是false,之外的任何其他数字都是true。bool使用一个字节表示。虽然仅用一个bit就可以表示true和false,但是寻址的时候是以字节为单位的。
同时使用sizeof可以来查看每种数据类型所占用的内存大小。譬如可以查看一下
#include <iostream>
int main() {
bool v1 = true;
bool v2 = false;
std::cout << sizeof(v1) << std::endl << sizeof(bool) << std::endl;
std::cin.get();
}
关于&和*,比较复杂,后面再讨论。
函数就是用来将代码分块的,一段代码写太长不好。Cherno举了个例子说明该用函数的地方用了ctrl+c和ctrl+p容易出错。
譬如说,这样一段代码
#include <iostream>
int Multiply(int x, int y) {
return x * y;
}
int main() {
int result = Multiply(3, 2);
std::cout << result << std::endl;
std::cin.get();
}
如果现在想多算几个乘法,那么拷贝一下:
#include <iostream>
int Multiply(int x, int y) {
return x * y;
}
int main() {
int result = Multiply(3, 2);
std::cout << result << std::endl;
int result = Multiply(7, 9);
std::cout << result << std::endl;
int result = Multiply(78, 63);
std::cout << result << std::endl;
std::cin.get();
}
那么一不小心就出错了。所以应该把一段完整的逻辑都放在一起。
#include <iostream>
int Multiply(int x, int y) {
return x * y;
}
void MultiplyAndLog(int x, int y) {
int result = Multiply(x, y);
std::cout << result << std::endl;
}
int main() {
MultiplyAndLog(2, 3);
MultiplyAndLog(8, 9);
MultiplyAndLog(75, 56);
std::cin.get();
}
函数当然很好,但是不能把每一行代码都塞到一个函数中去。函数调用会涉及到参数入栈,跳转等,也即函数调用是有开销的,而这个开销会拖慢程序的速度。
最后
以上就是标致白云为你收集整理的未定义与 double 类型的输入参数相对应的函数 eval_C++零基础4:变量,函数的全部内容,希望文章能够帮你解决未定义与 double 类型的输入参数相对应的函数 eval_C++零基础4:变量,函数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复