相关疑难解决方法(0)

错误:这个简单的C代码需要左值?(三元有任务吗?)

我有 :

#include<stdio.h>

int main()
{
 int a=5,b=6;
 (a>b)?b=a:b=b;    // Here is the error
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

但如果我更换:

(a>b)?b=a:b=b;       // Error
with   
(a>b)?(b=a):(b=b);   // No-Error
Run Code Online (Sandbox Code Playgroud)

我理解这lvalue是一个可以分配某些东西的价值,它与它有什么不同rvalue,但为什么会extra parenthesis产生不同.

c ternary-operator conditional-operator

11
推荐指数
2
解决办法
9156
查看次数

为什么这(i = ++ i%3)会产生警告:"可能未定义"?

int main(void)
{
    int i = 0;
    i = ++i % 3;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我这样编译:

$ gcc -Wall main.c -o main
main.c: In function ‘main’:
main.c:4: warning: operation on ‘i’ may be undefined
Run Code Online (Sandbox Code Playgroud)

为什么编译器说i可能未定义?

c

5
推荐指数
3
解决办法
333
查看次数

标签 统计

c ×2

conditional-operator ×1

ternary-operator ×1