Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在cpp中的单行中使用操作序列时的性能 最近我开始从基础上研究C++,我惊奇地发现,在下面的一些例子中,我可以用逗号分隔一行表达式。 //it'll execute all the expressions mentioned after condition seperated by comma for(int i=0;condition;++i,++x,cout<<"in for loop"<<endl,z = z*2); (x>y)? ++z,z1 = z*2, cout<<"printing statement"<<endl:cout<<"condition failed"<<endl,z = z/2;_C++ - Fatal编程技术网

在cpp中的单行中使用操作序列时的性能 最近我开始从基础上研究C++,我惊奇地发现,在下面的一些例子中,我可以用逗号分隔一行表达式。 //it'll execute all the expressions mentioned after condition seperated by comma for(int i=0;condition;++i,++x,cout<<"in for loop"<<endl,z = z*2); (x>y)? ++z,z1 = z*2, cout<<"printing statement"<<endl:cout<<"condition failed"<<endl,z = z/2;

在cpp中的单行中使用操作序列时的性能 最近我开始从基础上研究C++,我惊奇地发现,在下面的一些例子中,我可以用逗号分隔一行表达式。 //it'll execute all the expressions mentioned after condition seperated by comma for(int i=0;condition;++i,++x,cout<<"in for loop"<<endl,z = z*2); (x>y)? ++z,z1 = z*2, cout<<"printing statement"<<endl:cout<<"condition failed"<<endl,z = z/2;,c++,C++,在这里,我有一个混乱后,这是工作。用这种方式编码安全吗?或者用这种方式编码有什么问题吗 请澄清 如果我在任何地方都错了,请纠正我。我只是想知道为什么大多数程序员不使用这种方式。我在任何地方都没有见过这样的行。逗号运算符按顺序计算每个操作数。在标准语言中,左操作数和右操作数的求值之间有一个序列点 在包含逗号运算符的表达式中,左操作数的值将被丢弃,表达式将采用右操作数的值。在上面的两个示例中,逗号运算符都在void上下文中使用,因此不使用任何值 这样的语句不使用逗号运算符的值: exp1, exp2

在这里,我有一个混乱后,这是工作。用这种方式编码安全吗?或者用这种方式编码有什么问题吗

请澄清

如果我在任何地方都错了,请纠正我。我只是想知道为什么大多数程序员不使用这种方式。我在任何地方都没有见过这样的行。逗号运算符按顺序计算每个操作数。在标准语言中,左操作数和右操作数的求值之间有一个序列点

在包含逗号运算符的表达式中,左操作数的值将被丢弃,表达式将采用右操作数的值。在上面的两个示例中,逗号运算符都在void上下文中使用,因此不使用任何值

这样的语句不使用逗号运算符的值:

exp1, exp2, exp3, exp4;
相当于以下语句序列:

exp1; exp2; exp3; exp4;
第一个示例相当于以下内容:

for(int i=0;condition;) {
    ++i;
    ++x;
    cout<<"in for loop"<<endl;
    z = z*2;
}
第二个例子:

if (x>y) {
    ++z;
    z1 = z*2;
    cout<<"printing statement"<<endl;
} else {
    cout<<"condition failed"<<endl;
    z = z/2;
}

请注意,这比单行版本的可读性要高得多。它也更容易调试。由于调试器通常一次只执行一行代码,因此它会打断代码流,并且更细粒度。

不缩进和间隔代码在性能方面的成本不会降低。它是无法阅读的,令人困惑的,对你和任何需要使用它的人来说,理解它都是一种痛苦。 许多人会喜欢一个语法良好、优美且高效缩进的代码,而不是一个性能最好的代码。您可以修改、调试和折射可能不起作用但易于理解的代码。
另一方面,很少有代码保持不变和未读。总会有一段时间,有人,可能是你,不得不再读一遍,如果它看起来像是你的OP,那将是非常耗时的

这是允许的。在我看来,在没有参考的情况下,我会说,一般来说,其他程序员并不觉得您的“for”循环非常可读。有时,在for循环中,您想做其他事情,然后只为int i=0;i<10++i{do something}例如,在每个循环中用两个变量递增'i'。阅读代码应该像阅读文本一样。如果你正在读一本书,你不想让它变得不必要的困难

你的另一个问题是关于声明的安全性。代码的最大问题是,您可能会对自己到底在做什么感到困惑。错误是由人为错误引起的计算机是确定性的,并且正在执行最终由人编写的机器代码,有关安全性的问题主要取决于您如何定义它

给你一些提示。当我刚开始编程C++时,我在CPP参考上看了很多。我会给你一个链接,在那里你可以阅读语法和什么是允许的/可能的。在这个网站上有很多关于各种说法的例子。他们通常不会在一条生产线内进行5或6次操作。如果有更多的变量需要更改,那么您可能希望在for循环的范围内进行更改,这样它将更可读,而不是在for循环内


第一个概念:那就不同了……阅读这种代码相当困难,想象一下,在一个+500行的文件中,所有行都是这种格式。顺便说一句,答案是:'因为他们需要在一年后轻松阅读他们的代码……。“编程是一门告诉另一个人希望计算机做什么的艺术。”-唐纳德Knuth@saikiran否。-可能是关于其值被丢弃的子表达式序列的一些额外措辞==由这些子表达式构成的语句序列+;