在C中的main中返回负值
大家好,我的社区 我实际上正在做一个项目,试图模拟一个非常基本的shell。我有一个带参数的退出内置项,基于此,我需要返回正确的值(值%256) 例如:在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返回负数
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中的%
运算符不是模,而是余数。因此,对于有符号类型,它可能是负数。