Hello StackOverflow社区。
我实际上正在尝试模拟一个非常基本的shell。我有一个内置的取出一个参数,基于此我需要返回正确的值(值%256)
例如:
42号出口将返回42
300号出口将返回44
但我无法确切地知道这是如何工作的,例如有人试图退出-30。我做了一些测试,发现除了事实上它是256 - 30它来自哪个?
答案 0 :(得分:3)
C标准使得大多数事情都与实现定义的main
的返回值有关。基本上返回0
,EXIT_SUCCESS
或EXIT_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
的负数回归