【问题标题】:Conversion from int to unsigned short [closed]从 int 转换为 unsigned short [关闭]
【发布时间】:2016-08-13 15:23:53
【问题描述】:

这是我不理解的 C 程序的一部分:

unsigned short twittlen;
int x;

x = atoi(argv[1]);
twittlen = x;

if(twittlen >= 64) {
    printf("Nope , You don't know about Integer");
    return -1;
}

if (x >= 64 ) 
    printf("you got it ");

我的问题是如何找到一个大于 64 的 int 但将其转换为 unsigned short 时它将小于 64 ! 即使在stackoverflow上,我也看了很多关于这些类型整数的限制,但我没有找到关于这个的答案! 在此先感谢:)

【问题讨论】:

  • 在一个 int 中没有 那么多 个整数,为什么不做一个循环来尝试所有的整数,直到找到一个?
  • 请注意,用换行符结束打印到终端的消息是个好主意。它有助于确保及时查看信息;在打印换行符 之前输出可能不会出现,这可能比您预期的要晚很多。

标签: c type-conversion


【解决方案1】:

当您将int 值分配给unsigned short 时,将发生截断

假设int是4字节,short是2,你只需要给程序提供一个大于64且低两个字节小于64的值。

最大无符号 16 位值为 65535:

0x0000FFFF

所以如果你输入数字 65536:

0x00010000

当被截断为两个字节时:

0x0000

为零。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    • 1970-01-01
    • 2013-09-03
    • 2015-01-20
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    相关资源
    最近更新 更多