【问题标题】:What is the meaning of '==' in C?C语言中的'=='是什么意思?
【发布时间】:2010-01-28 13:13:32
【问题描述】:

==是什么意思,和=有什么区别?

我怎么知道要使用哪一个?

【问题讨论】:

  • 评论被删除,因为它们分散了对答案的注意力。 SO 在FAQ (stackoverflow.com/faq) 中有一个非常明确的No question is too trivial or too "newbie". 政策。如果您想讨论该政策,请联系meta.stackoverflow.com

标签: c syntax


【解决方案1】:

== 是对相等性的测试。 = 是一个作业。

任何好的 C 书籍都应该涵盖这一点(我想在本书的早期阶段)。

例如:

int i = 3;                       // sets i to 3.
if (i == 3) printf("i is 3\n");  // prints it.

小心那些令人发指的:

if (i = 4) { }

这是有效的 C 并且经常把人赶出去。这实际上分配 4 给变量i 并将其用作if 语句中的真值。这导致很多人使用更丑但更安全的:

if (4 == i) {}

如果你不小心使用了= 而不是==,这是一个编译时错误,而不是在你的程序运行时会咬你的东西:-)

逻辑或运算符是两个竖线字符,一个接一个,不是单个字符。在这里,它与一个逻辑与和一个名为 b4 的变量对齐:

||
&&
b4

那里没有魔法。

【讨论】:

【解决方案2】:
如果 a 和 b 相等,

a == b 是一个测试。

a = b称为assignment,意思是将变量a设置为与b相同的值。

(您在美式键盘布局中使用 Shift-\ 键入 |。)

【讨论】:

    【解决方案3】:

    == 测试相等性 = 赋值

    两者都与||无关

    【讨论】:

      【解决方案4】:

      我可能会在芬兰语和瑞典语键盘中添加它。管道符号; |; OR 是 AltGr(右 alt)和

      当我第一次开始在这些键盘上打字时,给了我很多汗水。

      【讨论】:

        【解决方案5】:

        既然您知道 '==' 和 '=" 之间的区别,让我提醒您一些注意事项。虽然 '==' 用作可比较变量之间相等性的标准测试,而 '=' 用作内部类型转换的赋值,以下编程错误很常见。

        在以下示例和类似代码中,'=' 被称为“始终为真”条件运算符。

        #include<stdio.h>
        int main()
        {
            int i = 10, j = 20;
            if ( i = j )
                printf("Equal\n");
            else
                printf("NOT Equal\n");
            return 0;
        }
        

        因此,请注意“切勿在if 语句中使用'=',除非你心里有邪恶的想法。”

        【讨论】:

        • 什么?没有什么比这更优雅的了: if (fh = fopen("file.txt","r") { process_file(fh); close (fh); } // :-)
        • 我也将其称为“始终正确,并且将 i 作为奖励”的条件运算符。但是好的建议,所以 +1。
        • @paxdiablo:你是对的......但我的警告仅适用于初学者。但是,在愚蠢的代码中,如果我想要一个重复的文件描述符为 'fh',这将导致错误: if (fd = fh = fopen("file.txt", "r") {//some code};
        猜你喜欢
        • 2011-01-14
        • 2020-10-30
        • 2020-08-07
        • 2016-12-03
        • 2011-09-02
        • 1970-01-01
        • 1970-01-01
        • 2011-08-27
        • 2015-11-16
        相关资源
        最近更新 更多