小编Rup*_*ell的帖子

time_t的大小及其最大值

#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)

c

8
推荐指数
4
解决办法
3万
查看次数

数据类型修饰符和移位运算符

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

6
推荐指数
1
解决办法
839
查看次数

标签 统计

c ×2