Đây là mã vấn đề của tôi:Ký hiệu char c = 255 là "11111111" hay không?
#include "stdio.h"
int main()
{
char a = -1;
unsigned char b = 255;
unsigned char c = 0;
if((~a) == c)
printf("OK 1");
else
printf("bad 1");
printf("\n");
if((~b) == c)
printf("OK 2");
else
printf("bad 2");
printf("\n");
}
tôi mong đợi này để in:
OK 1
OK 2
Nhưng, tôi nhận được OK 1 và xấu 2!
Nếu unsigned char b
là 255 (11111111), thì ~ b phải là 00000000. Tại sao nó không bằng c?
Tôi làm việc trên Linux SUSE, sử dụng gcc.
Bạn có thể sử dụng một số mã để chứng minh điều đó không? Thật khó tưởng tượng được –
* Mã * của bạn chứng minh điều đó. Nó chỉ là cách C hoạt động. –
OK, bạn đã đúng. –