📜  C |存储类和类型限定符|问题19(1)

📅  最后修改于: 2023-12-03 14:39:40.356000             🧑  作者: Mango

C | 存储类和类型限定符 | 问题19

在C语言中,存储类和类型限定符会影响变量的声明和使用方式。在本篇文章中,我们将探讨存储类和类型限定符的问题19。

问题19

以下代码片段中,x 和 y 的初始值是多少?

#include <stdio.h>

int main() {
    int x = 0;
    int y = 0;

    if(x = 5 || y = 10) {
        printf("x = %d, y = %d", x, y);
    }

    return 0;
}
答案
x = 1, y = 0
解释

在if的条件语句中,我们使用了赋值运算符“=”,而不是等于运算符“==”。所以条件表达式先执行了赋值运算,在将赋值结果当做条件判断。

因为x = 5的结果为真(非零,即使是1),条件表达式的值为真,所以整个if语句都会执行。而y的值依旧是0,因为y = 10这条语句没有被执行。

因此,在输出语句中,x的值为1(因为x = 5的结果为真),y的值为0(因为y = 10没有被执行)。

总结

在C语言中,掌握存储类和类型限定符的使用方法是很重要的。要特别小心赋值运算符“=”和等于运算符“==”的区别,避免出现类似问题19的错误。