【问题标题】:Cannot return negative values in c [duplicate]无法在c中返回负值[重复]
【发布时间】:2014-07-15 14:17:03
【问题描述】:
int main(){ return -1; }

我用gcc编译了上面的c程序。 为了找到程序的返回值,我使用了 echo $?。 echo $? 的输出是 255。目前我正在使用终结器

我怎样才能得到负值。

【问题讨论】:

  • 您可以从main 便携式返回的唯一值是EXIT_SUCCESSEXIT_FAILURE。对于其他任何事情,请咨询您的操作系统。
  • 还需要提一下EXIT_SUCCESS等价于0
  • 不支持 main 的负回报。请参阅glibc“这是一个介于 0 和 255 之间的值,退出进程作为参数传递给退出。”
  • 在 POSIX 系统(UNIX、Linux 等)上,该值由 wait 系统调用确定。其他系统可能有其他语义。
  • @ooga:C 标准没有说EXIT_SUCCESS == 0;它只是说0EXIT_SUCCESS 都表示成功。但我从未听说过EXIT_SUCCESS != 0 的系统。 (我见过EXIT_FAILURE != 1的系统。)

标签: c linux


【解决方案1】:

进程的返回码存储在单个无符号字节中。

你不能这样做。

【讨论】:

  • 我认为得到一些参考资料的支持会让答案受益匪浅。
  • 如果我将此程序作为另一个程序的子程序运行,返回值是什么,是 -1 还是 255?
  • @Vivek:这取决于你如何解释字节。
【解决方案2】:

从技术上讲,这就是您写的回报。有符号值为-1的字节的无符号值为255。

【讨论】:

  • 这很明显,我想知道为什么不按原样给出负值
  • 如果你认为这很明显,那么这里就有一个根本的误解。 -1 在二进制中是 11111111。255 也是 11111111。
猜你喜欢
  • 1970-01-01
  • 2014-03-31
  • 1970-01-01
  • 2022-10-02
  • 2019-03-17
  • 2013-09-24
  • 1970-01-01
  • 1970-01-01
  • 2018-03-02
相关资源
最近更新 更多