#include <stdio.h>
#include <time.h>
int main()
{
printf("Size of time_t is %lu bytes.\n", sizeof(time_t));
time_t biggest = 0x7fffffffffffffff; // line 1
printf("time_t's wrap around will be a second after %s.\n", asctime(gmtime(&biggest)) );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在time.h中,这是time_t的定义吗?
typedef __darwin_time_t time_t
Run Code Online (Sandbox Code Playgroud)
怎么解释呢?由于我不知道,我使用sizeof函数来查找time_t = 8个字节.
为什么第1行会给出错误呢?我收到了这个错误
Segmentation fault: 11
Run Code Online (Sandbox Code Playgroud) int main(void)
{
unsigned i = -23; // line 1
short a, b = 0x1;
printf("sizeof(short) = %i\n", (int)sizeof(short)); // line 2
a = b << 31; // line 3
printf("i = %i", i); // line 4
printf("i = %u", i); // line 5
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当指定类型修饰符unsigned时,为什么第1行没有给出任何错误?
第2行在sizeof(short)我的系统中打印为2个字节.a和b是短整数,因此长度为2个字节或16位.但第3行不会引发任何错误.当字长仅为16位时,如何左移31位?
第4行和第5行是否有任何隐式转换?
我在64位Mac上使用GCC编译器.
c ×2