这可能是一个愚蠢的问题,但我总是发现自己想知道哪个是标准.
在大多数(不是说全部)C++第一个例子中,您可能会看到main函数返回0值.这意味着操作是否正常?
这是标准的做法吗?
顺便说一下,在这种情况下返回整数或布尔值会更好吗?
感谢你们!
我知道C89中的约定总是在C程序中从main返回0整数值,如下所示:
int main() {
/* do something useful here */
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是为了向操作系统返回"成功"结果.我仍然认为自己是C语言中的新手(或者说是最好的中级程序员),但到目前为止,我还没有完全理解为什么这很重要.
我的猜测是,如果你将这个程序的输出绑定到另一个程序的输入中,这是一个有用的返回结果,但我不确定.我从来没有发现它有用,或者我只是不明白其意图是什么.
我的问题:
main()有用?我有一个令我困惑的简单问题.
目标:我想从文件中读取一个给定的字节(比如第一个字节),并使用该字节的ASCII值生成int x.因此,例如,如果字节/字符是'a',我希望x为97(=十六进制为61).我有以下读取文件example.txt的第一个字节:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(){
unsigned int x;
unsigned char b;
ifstream myFile ("example.txt", ios::out | ios::binary);
myFile.seekg (0, ios::beg);
myFile >> b;
x = (unsigned int)b;
cout << hex << x;
return b;
}
Run Code Online (Sandbox Code Playgroud)
问题:如果第一个字节用08表示,那么我确实得到了8的输出.但如果字节用09表示,那么我得到0.我注意到我似乎得到了下面的字节,除非那个字节也是09.我不知道我的问题是否仅在字节用ASCII表示为09时.
问题:那么如何读取文件中的第一个(或第三个或其他)字节,并使用该字节的ASCII值生成一个int?
(我在Windows XP上)
可能的重复:
main() 在 C/C++ 中应该返回什么?
大约一个小时前刚刚开始编码 C,经过几个月的基本 Java 编码,并且在编译基本的 hello world 程序时遇到了问题。
这是我的代码:
#include < stdio.h>
void main()
{
printf("\nHello World\n");
}
Run Code Online (Sandbox Code Playgroud)
这就是我尝试编译时得到的结果:
Hello.c: In function ‘main’:
Hello.c:13: warning: return type of ‘main’ is not ‘int’
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,谢谢!
在大多数情况下int main()不返回任何东西,它甚至不必,因为没有return不会给出错误.那么为什么main必须返回一个int?为什么无效主要不可能?
编辑:我的意思是,如果通常没有,为什么int main()是标准return?
我已经明白这char **envp是第三个参数main,并且在下面的代码的帮助下,我能够看到它实际包含的内容.
int main(int argc, char *argv[], char *env[])
{
int i;
for (i=0 ; env[i] ; i++)
std::cout << env[i] << std::endl;
std::cout << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么(在什么情况下)程序员需要使用它?我发现了很多解释什么这个说法呢,但没有什么能告诉我在那里,这是通常使用的.试图了解这可能会使用哪种现实世界的情况.
我是C++的新手,我正在读一本名为Big C++的书.在本书中,我到目前为止看到的所有示例程序都return 0;在最终结束之前结束}.我显然可以让C++程序return 0;在最后运行,所以我想知道它的用途是什么.我熟悉从java中的方法返回一些东西,但我不明白为什么int main()需要在C++中返回0.为了得到更多关键点:我是否应该总是main()用return 0;C++ 结束?如果没有,我什么时候需要,什么时候不应该?什么return 0;告诉程序要做什么?
在一个相关的问题中,我假设C++中的main()正在设置main函数,就像java中的main方法一样.那是对的吗?为什么main方法被声明为整数?那是在发生什么int main() {?
我最近在搜索 C 中的环境变量时遇到了以下问题:
int main (int argc, char *argv[], *char *envp[])
Run Code Online (Sandbox Code Playgroud)
我四处搜索,找不到关于我的问题的任何结论。
main()可以接受的所有可用参数是什么?
我知道当前的C++标准特殊情况main使得从最终落下的效果与return 0;未定义的行为具有相同的效果.
我最近惊讶地发现在codereview上的一个例子,其中的响应不仅指出包括final return 0;是可选的,而且实际上甚至将其从原始代码中删除.
因此提示我的问题 - return 0;在主要结尾处明确表达是否真的被认为是不好的风格?支持或反对的理由是什么?
背景:
我需要在C代码中获取寄存器值,因此我在gcc用法中发现了这一点。我使用以下代码获得ebp值。
register int ebp asm("ebp");
printf("currently ebp is %08x\n", ebp);
// then some code use the value
Run Code Online (Sandbox Code Playgroud)
一切正常,直到我将程序的编译器更改为clang为止。在gcc中,它通常会打印类似于0x7f1284978的内容,绝对是类似value的指针。
但是当使用clang时,输出变得很奇怪,它打印出一个0x9之类的值。Ebp不能具有这样的值。
问:
如果它不支持此功能,为什么不抱怨警告或错误(使用以下代码进行编译)?
#include <stdio.h>
static size_t vfp = 0x233;
int main(void) {
register int ebp asm("ebp");
vfp = (size_t) ebp;
printf("vfp value is 0x%lx\n", vfp);
return 0;
}
Run Code Online (Sandbox Code Playgroud)