定义变量与动态计算

时间:2014-08-21 22:36:12

标签: c++ variables math

就可读性和内存使用/处理速度而言,定义变量,修改变量并输出变量或仅输出结果更好吗?例如:

int a = 1, b = 2, c;
c = a+b;
std::cout << c << std::endl;

VS

int a = 1, b = 2;
std::cout << a+b << std::endl;

由于

2 个答案:

答案 0 :(得分:2)

在这个例子中,处理速度和空间可以忽略不计。这么小而且很少说明。

但在宏伟的计划中,答案是 - 这取决于它。

术语&#34;更好&#34;是在旁观者的眼中。对于一个程序而言,哪个更好可能对另一个程序更好(这包括可读性)。在一个实例中可能起作用的可能在另一个实例中起作用或者最后它可以忽略不计(算术指令非常快,取决于你需要的范围和int,double,char,float数据类型相对较小且定义良好,所以你知道你占用了多少内存)。

这里您不定义是否在堆栈或堆上声明了这些变量。如果在堆栈上,那么如果您声明它并不重要,因为在这些变量生效的函数结束后,内存将被释放。如果在堆上,您可能不想仅仅为了坐在那里声明数百万个变量。但是你可能还需要它们。

因此,在处理更大的项目时,它几乎完全基于个案基础。 你告诉我这里有什么好处?

 int result = (3434*234+3423-4/3*23< 233+5435*234+342)? (int)(234+234+234234/34):(int)(2+3*234);
 std::cout << result << std::endl;

OR

 double x =  3434*234+3423-4/3*23;
 double y = 233+5435*234+342;
 double a = 234+234+234234/34;
 double b = 2+3*234;
 int result = 0;
 if( x>y) result = a;
 else result = b;
 std::cout << result << std::endl;

最后这些做同样的事情是否相同,可忽略不计,哪一个更容易阅读?

答案 1 :(得分:1)

关于内存的问题很容易回答,变量是存储的标识符,所以每个都需要几个字节(字节存储8位或二进制数字)来存储。话虽这么说,一个字节几乎没有内存,这意味着它最终没有净效应。就RAM(或随机存取存储器)而言,字节再次几乎可以忽略不计,这意味着定义a,b和c几乎不比仅计算a + b慢。有意义吗?