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

C语言基础疑问:赋值与判断运算后为何变量c的值为1

C语言表达式返回值规则说明
  • 你对b=(a=10)的运算逻辑理解完全正确。C语言中赋值表达式本身具备返回值,返回值为赋值操作完成后左操作数的最终取值。此处a=10执行后将变量a设为10,整个表达式的返回值也为10,赋值给b后b的取值自然为10。
  • 变量c取值为1的核心原因是==为C语言的相等关系运算符,和赋值运算符=的作用完全不同:
    • 所有关系运算符的运算结果均为布尔逻辑对应的整数值:关系成立时返回1,关系不成立时返回0。
    • 你的代码中变量a此前已经被赋值为10,a==10的判断条件成立,因此该表达式返回值为1,赋值给c后c的最终取值就是1。

你提供的代码逐行逻辑验证如下:

#include <stdio.h>

int main()
{
    int a = 10; // 初始化a的值为10
    int b=(a=10); // 赋值表达式a=10返回10,b被赋值为10
    int c=(a==10); // 相等判断a==10成立,表达式返回1,c被赋值为1
    printf("B %d\n",b); // 输出结果为 B 10
    printf("C %d\n",c); // 输出结果为 C 1
}

注:日常写代码时注意区分赋值运算符=和相等判断运算符==,二者混用是C语言新手最常见的bug来源之一。

内容的提问来源于stack exchange,提问作者Alelele

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:24:03