如何为变量赋值并在while循环中检查其值?

Posted

技术标签:

【中文标题】如何为变量赋值并在while循环中检查其值?【英文标题】:How to assign a value to a variable and also check its value in a while loop? 【发布时间】:2021-10-22 22:52:57 【问题描述】:

我正在用 C 语言做一个时间要求严格的应用程序。我想给一个变量赋值并在一个 while 循环中同时检查它的值,以便稍后在这个循环的主体中重用它。分配给变量的值由需要一些时间运行的函数返回。我知道我可以这样做:

while (function_returning_int() <= foo) 
    bar(function_returning_int());

问题是这涉及到调用同一个函数两次。我尝试这样做:

while ((int thing = function_returning_int()) <= foo) 
    bar(thing);

它给了我一个错误。我不明白为什么赋值运算符 (=) 返回赋值。如何在 while 循环中为变量赋值并同时检查其值?

【问题讨论】:

C 代码短并不意味着执行速度更快,无论是用源代码的字符、源代码的行数还是 C 代码中的操作数来衡量短。了解源代码如何影响现代系统的性能需要深入了解编译器、处理器和其他技术。当你开发它时,更喜欢编写清晰的代码而不是带有“聪明技巧”的代码。 【参考方案1】:

你已经接近了。你只需要在循环外声明变量:

int thing;
while (( thing = function_returning_int()) <= foo) 
    bar(thing);

【讨论】:

【参考方案2】:

您必须将结果存储在变量中。为了限制它的范围,可以将 c99 语法用于 'for' 循环。

for (int val; ( val = function_returning_int()) <= foo;)
    bar(val);

【讨论】:

【参考方案3】:

试试这个。解决方案是将循环内声明的变量赋值给另一个局部变量。然后在main方法中使用变量。在while循环外声明变量。

【讨论】:

以上是关于如何为变量赋值并在while循环中检查其值?的主要内容,如果未能解决你的问题,请参考以下文章

C语言中用const声明全局变量赋初值和不赋初值有何区别?变量存放位置有啥不一样?

如何同时调用俩次scanf 给一个变量赋值?

Go语言循环语句

实验五——循环结构学习总结

go-008-循环语句

如何为 TensorFlow 变量赋值?