我有 :
#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产生不同.
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可能未定义?