bitfld-3.c
来自「用于进行gcc测试」· C语言 代码 · 共 55 行
C
55 行
/* Test that operations on bit-fields yield results reduced to bit-field type. *//* Origin: Joseph Myers <jsm@polyomino.org.uk> */extern void exit (int);extern void abort (void);struct s { unsigned long long u33: 33; unsigned long long u40: 40; unsigned long long u41: 41;};struct s a = { 0x100000, 0x100000, 0x100000 };struct s b = { 0x100000000ULL, 0x100000000ULL, 0x100000000ULL };struct s c = { 0x1FFFFFFFFULL, 0, 0 };int main (void){ if (a.u33 * a.u33 != 0 || a.u33 * a.u40 != 0 || a.u40 * a.u33 != 0 || a.u40 * a.u40 != 0) abort (); if (a.u33 * a.u41 != 0x10000000000ULL || a.u40 * a.u41 != 0x10000000000ULL || a.u41 * a.u33 != 0x10000000000ULL || a.u41 * a.u40 != 0x10000000000ULL || a.u41 * a.u41 != 0x10000000000ULL) abort (); if (b.u33 + b.u33 != 0) abort (); if (b.u33 + b.u40 != 0x200000000ULL || b.u33 + b.u41 != 0x200000000ULL || b.u40 + b.u33 != 0x200000000ULL || b.u40 + b.u40 != 0x200000000ULL || b.u40 + b.u41 != 0x200000000ULL || b.u41 + b.u33 != 0x200000000ULL || b.u41 + b.u40 != 0x200000000ULL || b.u41 + b.u41 != 0x200000000ULL) abort (); if (a.u33 - b.u33 != 0x100100000ULL || a.u33 - b.u40 != 0xFF00100000ULL || a.u33 - b.u41 != 0x1FF00100000ULL || a.u40 - b.u33 != 0xFF00100000ULL || a.u40 - b.u40 != 0xFF00100000ULL || a.u40 - b.u41 != 0x1FF00100000ULL || a.u41 - b.u33 != 0x1FF00100000ULL || a.u41 - b.u40 != 0x1FF00100000ULL || a.u41 - b.u41 != 0x1FF00100000ULL) abort (); if (++c.u33 != 0 || --c.u40 != 0xFFFFFFFFFFULL || c.u41-- != 0) abort (); exit (0);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?