相关疑难解决方法(0)

按惯例返回零是什么意思?

这可能是一个愚蠢的问题,但我总是发现自己想知道哪个是标准.

在大多数(不是说全部)C++第一个例子中,您可能会看到main函数返回0值.这意味着操作是否正常?

  • 0 - >好的
  • 1 - >不行.
  • 其他 - >?

这是标准的做法吗?

顺便说一下,在这种情况下返回整数或布尔值会更好吗?

感谢你们!

c++

5
推荐指数
1
解决办法
4694
查看次数

从主要必须返回零,并且main的返回值如何有用?

我知道C89中的约定总是在C程序中从main返回0整数值,如下所示:

int main() {

    /* do something useful here */

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是为了向操作系统返回"成功"结果.我仍然认为自己是C语言中的新手(或者说是最好的中级程序员),但到目前为止,我还没有完全理解为什么这很重要.

我的猜测是,如果你将这个程序的输出绑定到另一个程序的输入中,这是一个有用的返回结果,但我不确定.我从来没有发现它有用,或者我只是不明白其意图是什么.

我的问题:

  1. 从C程序返回零总是必要的吗?
  2. 返回值如何main()有用?

c return-value exit-code

5
推荐指数
1
解决办法
4379
查看次数

如何读取一个字节并在c ++中保存整数字节的ASCII值

我有一个令我困惑的简单问题.

目标:我想从文件中读取一个给定的字节(比如第一个字节),并使用该字节的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上)

c++ int ascii char

5
推荐指数
1
解决办法
1982
查看次数

Hello.c:在函数“main”中:Hello.c:13:警告:“main”的返回类型不是“int”?

可能的重复:
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)

任何帮助将不胜感激,谢谢!

c int

5
推荐指数
2
解决办法
3万
查看次数

为什么main()必须返回一个int?

在大多数情况下int main()不返回任何东西,它甚至不必,因为没有return不会给出错误.那么为什么main必须返回一个int?为什么无效主要不可能?

编辑:我的意思是,如果通常没有,为什么int main()是标准return

c++

5
推荐指数
2
解决办法
5254
查看次数

C++ main()的第三个环境变量参数有什么用?

我已经明白这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++ program-entry-point environment-variables

5
推荐指数
2
解决办法
4267
查看次数

我什么时候应该用'return 0'结束一个C++程序?

我是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++ program-entry-point return

5
推荐指数
2
解决办法
1826
查看次数

main() 是否还有其他参数可以接受?

我最近在搜索 C 中的环境变量时遇到了以下问题:

int main (int argc, char *argv[], *char *envp[])
Run Code Online (Sandbox Code Playgroud)

我四处搜索,找不到关于我的问题的任何结论。

main()可以接受的所有可用参数是什么?

c program-entry-point arguments argv argc

5
推荐指数
1
解决办法
435
查看次数

应该返回0; 在main()中避免?

我知道当前的C++标准特殊情况main使得从最终落下的效果与return 0;未定义的行为具有相同的效果.

我最近惊讶地发现在codereview上的一个例子,其中的响应不仅指出包括final return 0;是可选的,而且实际上甚至其从原始代码中删除.

因此提示我的问题 - return 0;在主要结尾处明确表达是否真的被认为是不好的风格?支持或反对的理由是什么?

c++ program-entry-point

5
推荐指数
1
解决办法
257
查看次数

与gcc相比,为什么clang在寄存器变量中表现怪异?

背景:

我需要在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不能具有这样的值。

问:

  • clang不支持此寄存器变量用法吗?
  • 如果它不支持此功能,为什么不抱怨警告或错误(使用以下代码进行编译)?

    #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)

c assembly clang

5
推荐指数
1
解决办法
204
查看次数