Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何计算这些C表达式?_C - Fatal编程技术网

如何计算这些C表达式?

如何计算这些C表达式?,c,C,首先,这是我正在研究的问题: 在C中计算下列表达式: int x=1, y=7, z=0; char a='m'; 1)a?y-x:x–y 2)x=5?(y=z):(z=y) 我理解其余的问题,但数字(1)让我困惑。。。它不应该是一个逻辑表达式吗? 我的意思是,'m'不能是真的也不能是假的;我如何回答这个问题?这仅仅是“错误”吗?还是我错过了什么 对于数字(2)应该执行语句(z=y),该语句将z更改为7,但它不应该是x==5,我在终端上进行了尝试,它将x和y更改为0 我错过了什么 在C语言

首先,这是我正在研究的问题:

在C中计算下列表达式:

int x=1, y=7, z=0;  
char a='m';
1)
a?y-x:x–y

2)
x=5?(y=z):(z=y)

我理解其余的问题,但数字(1)让我困惑。。。它不应该是一个逻辑表达式吗? 我的意思是,
'm'
不能是真的也不能是假的;我如何回答这个问题?这仅仅是“错误”吗?还是我错过了什么

对于数字(2)应该执行语句
(z=y)
,该语句将
z
更改为7,但它不应该是
x==5
,我在终端上进行了尝试,它将
x
y
更改为
0

我错过了什么

  • 在C语言中,任何数字类型都可以作为布尔值计算,对于这种类型,任何非零值都是“true”。因此,由于字符
    'm'
    不是零(只有
    '\0'
    是零),因此它是“true”

  • 优先级——C中的所有运算符都具有优先级,而?:,虽然低于大多数运算符,但高于赋值运算符。所以这个表达式相当于:


  • x=(5?(y=z):(z=y))

    'm'
    为非零,因此其计算结果为
    true
    。您可能需要了解。请注意,
    z=y
    将不会被执行<代码>y=z将被执行-
    (测试)?如果正确:如果错误是三元结构。为什么不写一个程序呢?毕竟,这是一个编程问题的网站。