在C中的main中返回负值

在C中的main中返回负值,c,shell,return,negative-number,C,Shell,Return,Negative Number,大家好,我的社区 我实际上正在做一个项目,试图模拟一个非常基本的shell。我有一个带参数的退出内置项,基于此,我需要返回正确的值(值%256) 例如: 42号出口将返回42号出口 300号出口将返回44号出口 但我无法找到这到底是如何工作的,例如有人试图做出口-30。我做了一些测试,发现它是226,而实际上它的来源是256-30。一个程序到linux内核的返回值是uint8\u t类型。一个程序到linux内核的返回值是uint8\u t类型。在编程语言和此外,这里有一个关于从main返回负数

大家好,我的社区

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

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


但我无法找到这到底是如何工作的,例如有人试图做出口-30。我做了一些测试,发现它是226,而实际上它的来源是256-30。

一个程序到linux内核的返回值是
uint8\u t
类型。

一个程序到linux内核的返回值是
uint8\u t
类型。

在编程语言和此外,这里有一个关于从main返回负数到OS的东西,在编程语言中,模总是一个正数,此外还有一个关于从main返回负数到OS的东西,C标准将关于
main
的返回值的大部分内容留给实现来定义。基本上,返回
0
EXIT\u SUCCESS
EXIT\u FAILURE
在某种程度上是标准和可靠的,其他一切都取决于平台。在这种情况下,操作系统似乎给出了模256的值(作为
uint8\t
)。

C标准将
main
返回值的大部分内容留给实现来定义。基本上,返回
0
EXIT\u SUCCESS
EXIT\u FAILURE
在某种程度上是标准和可靠的,其他一切都取决于平台。在这种情况下,操作系统似乎给出了模256的值(作为一个
uint8\t
)。

您的程序返回一个无符号整数。由于数字必须是正数,因此从模计算出的值最终看起来像是“环绕”的数字

下面是一些快速测试代码以演示:

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

226
-30

您的程序正在返回一个无符号整数。由于该数字必须为正,因此从模数计算出的值最终看起来像是“环绕”的数字

下面是一些快速测试代码以演示:

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

226
-30

嗯。。。这是
-30%256=226
是的,我知道,但我读到有不同的方法解释负数的模。但是我想理解它背后的含义,我也不确定在main中退出()还是返回()更好。嗯。。。这是
-30%256=226
是的,我知道,但我读到有不同的方法解释负数的模。但是我想理解它背后的含义,我也不确定在main中退出()或返回()是否更好。
unsigned uint8\u t
不存在,
uint8\u t
根据定义是unsigned。
unsigned uint8\u t
不存在,根据定义,
uint8\u t
是无符号的。C中的
%
运算符不是模而是余数。因此,对于有符号类型,它可能是负数。C中的
%
运算符不是模,而是余数。因此,对于有符号类型,它可能是负数。