在C中返回main中的负值

时间:2014-02-27 19:42:13

标签: c shell return negative-number

Hello StackOverflow社区。

我实际上正在尝试模拟一个非常基本的shell。我有一个内置的取出一个参数,基于此我需要返回正确的值(值%256)

例如:
42号出口将返回42 300号出口将返回44

但我无法确切地知道这是如何工作的,例如有人试图退出-30。我做了一些测试,发现除了事实上它是256 - 30它来自哪个?

4 个答案:

答案 0 :(得分:3)

C标准使得大多数事情都与实现定义的main的返回值有关。基本上返回0EXIT_SUCCESSEXIT_FAILURE在某种程度上是标准和可靠的,其他一切都取决于平台。在这种情况下,操作系统似乎为您提供模256的值(作为uint8_t)。

答案 1 :(得分:1)

你的程序返回一个unsigned int。由于数字必须是正数,因此模数的计算值最终看起来像数字'缠绕'。

以下是一些快速测试代码,用于演示:

int main(){
    unsigned int x = -30;
    signed int y = -30;
    printf("%d\n", x % 256);
    printf("%d\n", y % 256);
}

输出:

226
-30

答案 2 :(得分:0)

程序返回linux内核的值为uint8_t类型。

答案 3 :(得分:0)

Modulo在编程语言中始终是一个正数,除此之外还有从主要数字到OS C++: How can I return a negative value in main.cpp

的负数回归