Cha*_*kar 2 c unsigned implicit-conversion
int main()
{
unsigned int c = -1;
char *s = "Abc";
char *x = "defhe";
((strlen(s)-strlen(x))>c)? printf(s): printf(x);
}
Run Code Online (Sandbox Code Playgroud)
的值c就是4294967295和的值(strlen(s)-strlen(x))是4294967294应打印x,但在打印的S value.I上午没有得到为什么它是这样的
c的值是4294967295,(strlen(s)-strlen(x))的值是4294967294
(strlen(s)-strlen(x))收益率并不一定正确4294967294.这取决于SIZE_MAX您系统的价值.
如果SIZE_MAX是18446744073709551615(通常在64位系统),那么(strlen(s)-strlen(x))将是18446744073709551614这显然大于4294967295(假设UINT_MAX是4294967295).因此,你看到printf(s);打印.
使用printf()语句查看值并理解:
printf("%zu %u\n", strlen(s)-strlen(x), c);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
217 次 |
| 最近记录: |