You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中如何在while循环中同时完成变量赋值与值校验

报错原因

C语言语法规定,while关键字后的括号内只能填写表达式,你尝试的写法中int thing = function_returning_int()属于变量声明语句,不属于合法表达式,因此无法通过编译。
你提到的「赋值运算符返回被赋的值」规则仅适用于赋值表达式,不适用于带类型声明的变量初始化操作。

可行实现方案

方案1(推荐,C99及以上标准支持)

使用for循环实现变量声明、赋值、校验逻辑的合并,变量作用域仅限制在循环内部,不会污染外部命名空间,全程仅调用一次耗时函数,完全符合时间敏感型应用的性能要求:

// for循环的第三个表达式留空即可,所有逻辑放在前两个位置
for (int thing; (thing = function_returning_int()) <= foo; ) {
    bar(thing);
}

方案2(兼容C89标准)

如果你的编译环境不支持C99,可以将变量声明提到while循环外部:

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

如果需要限制变量作用域,可以在外层加独立代码块:

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

内容的提问来源于stack exchange,提问作者Adel M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 18:54:01