如何用C编写Hello World

时间:2012-08-23 05:29:30

标签: c compiler-errors

我写了一个小程序在C中打印“Hello world”。我不是C程序员,但我喜欢尝试它。在我的程序中有一个错误。请告诉我它是什么? 这是我的计划:

int main(){
    printf("Hello World");
}

我用Java Experiences写了这篇文章。我找不到有什么问题。

13 个答案:

答案 0 :(得分:7)

C语言中的完整hello world程序:

#include <stdio.h>

int main(void) {
    printf("Hello World\n");
    return 0;
}

然后编译(假设gcc)并执行它:

gcc -o test test.c
./test

答案 1 :(得分:7)

您不能像在Java中那样直接使用printf()函数。您应该告诉编译器您将使用输入/输出流。你可以在这一行告诉它:

#include <stdio.h>

你也应该在源代码的末尾输入这一行:

return 0;

这将告诉编译器:

  

“如果程序成功它将返回0否则它将返回任何其他数字”

这意味着如果你的程序成功,main()函数将返回0.然后编译知道程序是OK。

最后你的完整代码是:

#include <stdio.h>

int main() {
    printf("Hello world");
    return 0;
}

要编译它并看到“Hello World”一词,只需将此文件另存为.c文件并在程序目录中打开cmd并键入

gcc hello.c -o hello && hello

(将'hello.c'替换为您的文件名,将'hello'替换为您想要放入.exe文件的名称)

记住我的电脑是Windows。这个编译代码适用于Windows。如果您的操作系统是UNIX,就像OS一样然后使用此代码进行编译:

gcc hello.c -o hello
./hello

答案 2 :(得分:3)

首先,您必须使用头文件。

#include <stdio.h>

这样做会带来一个包含大量命令的头文件。这将使它识别“printf”代码片段。 接下来,您必须关闭您的程序。如果没有结束语句,程序将无法编译,因为它不知道这是否是代码的结尾。在程序结束时使用它......

return 0;

关闭程序,意味着编译器可以停止查找其他代码。您可能还想查看一些编程手册(有许多免费在线版本)来了解语法。

最后一件事:大多数C代码最后需要一个分号。对于“int main”语句不是这样,也不是我上面定义的头文件。但是,关闭程序的“返回”功能需要一个分号。

希望这有所帮助。

答案 3 :(得分:2)

最后还应包括暂停:

#include <stdio.h>

int main(void) {
    printf("Hello World\n");

    //Read a character from the console
    getchar();

    return 0;
}

答案 4 :(得分:2)

就像在Java程序中导入一样,在这里你需要在程序中使用include个库。您已使用库函数printf,但未包括stdio.h

答案 5 :(得分:2)

我同意有很多方法可以写出最简单的方法之一

#include<stdio.h>

int main(void){
  printf("Hello World\n");
  return 0;
}

您甚至可以按照上面的建议使用不同的方式。

答案 6 :(得分:1)

首先应该看一下“主要”的结构。尝试理解上面答案中已经解释过的各个部分。

  

“#include”:要包含在程序中的预处理指令。但为什么?因为您正在尝试使用其中定义的函数。

     

int:“main”程序的返回类型。但为什么?因为调用“main”的函数需要知道“main”程序是否正常运行。

     

main:代码的入口点。不要问为什么在这里: - )

     

main(void):告诉编译器我们没有将任何参数传递给程序“main”

     

返回0:因为你承诺“主要”,如果“主”能正常运作,你将返回一些东西。

最后代码:

#include <stdio.h>
int main( void )
{
    printf( "Hello World\n" ) ; //Notice the '\n' here. Good coding practice.
    return 0 ;
}

答案 7 :(得分:1)

 #include <stdio.h>                   //Pre-processor commands<br/>
 void main()                          //Starting point of the program<br/>{ //Opening Braces            
     printf("Hello World\n");         //Print Hello World on the screen<br/> 
     return 0;
 }                                    //Ending Braces

答案 8 :(得分:0)

检查一下它会起作用,我写了评论:

#include<stdio.h>               //Pre-processor commands

void main() {
    printf("Hello World\n");    //Print Hello World on the screen
}

答案 9 :(得分:0)

如果有人好奇的话,有两种不同的做法。这对于第一次理解并不是很好,这将是几个变体中提供的标准版本,并且有很好的解释,但是相当有趣,有时候很棘手。一旦您了解了有关 C 的更多信息,您可能想要了解以下变体的工作原理以及程序员如何进行此类混淆。

请注意, C 是非常简单的语言,可让您非常直接。因此,举例来说,++ii++i += 1i = i + 1会转换为不同的汇编代码(如果您不使用编译器优化)。

汇编

clang -O3 hw.c && ./a.out

最短

int [main]return 0;可以隐含地表示:

#include <stdio.h>
main() { puts("Hello, World!"); }

一个接一个

#include <stdio.h>

int main() {
    for(char *c = "Hello, World!"; *c; ++c)
        if(__sputc(*c, stdout) != *c)
            return EOF;
    return 0;
}

__ sputc 定义为 here

模糊(请参阅referenced question

#include <stdio.h>
main() {
  long long P = 1,
            E = 2,
            T = 5,
            A = 61,
            L = 251,
            N = 3659,
            R = 271173410,
            G = 1479296389,
            x[] = { G * R * E * E * T , P * L * A * N * E * T };
  puts((char*)x);
}

提示: long long正好是8个字节,或8个字符。 Hello, World!的长度为13个字节。

#define u unsigned char
#define v while(*x)
#define z(x) putchar(*x);
#define y(x) ++*x;
#define p(x) ++x;
#define e(x) --*x;
#define d(x) --x;
#define w(x) x x
main(){u *x=calloc(12,1);u *l=x;w(w(w(y(x))))w(y(x))v{p(x)w(w(y(x)))w(y(x))y(x)p
(x)w(w(w(y(x))))w(y(x))p(x)w(y(x))y(x)p(x)w(w(w(y(x))))y(x)w(w(d(x)))e(x)}p(x)w(
y(x))z(x)p(x)y(x)z(x)w(w(y(x)))w(y(x))y(x)w(z(x))w(y(x))y(x)z(x)p(x)w(y(x))z(x)p
(x)w(e(x))e(x)z(x)w(d(x))z(x)w(y(x))y(x)z(x)w(w(e(x)))w(e(x))z(x)w(w(w(e(x))))z(
x)p(x)y(x)z(x)free(l);}
#include <stdio.h>
#define BING(x,y) ((x)<<y)
#define BANG(x)   (1<<x)
#define BOOM      1
int main () {
  int x,y,z,w;
  int V[3] = {BING(x=227380393,BANG(BOOM)+BOOM), x+(w=BOOM+BANG(BANG(BOOM)),
              BING(47*y=17453197,BOOM)), x+y+BING(w*w*17*185527,BANG(BOOM))};
  char *p=V;
  while(*(p-BOOM)!=BOOM+BING(BOOM,w)) putchar(*p++);
  return 0;
} /* Mind the comma operator! */
#include <stdio.h>
int main() {
    // Some floating point numbers for testing
    float b[] = {1.1431391224375825e+27, 6.6578486920496456e+28, 7.7392930965627798e-19, 3.2512161851627752e-9};
    // Print all numbers in array b[]
    puts(b);

    return 0;
}

提示作者认为sizeof(float) == 4

在C语言中编写程序的方法还有很多,遇到它们的最佳方法是使用自己的方法或google。

答案 10 :(得分:0)

一个完整的 C 语言的 hello world 程序:

#include <stdio.h>

int main(void) {
    printf("Hello World\n");
    return 0;
}
Then compile (assuming gcc) and execute it:

gcc -o test test.c
./test

答案 11 :(得分:0)

您不能像在 Java 中那样使用 printf() 函数。你必须告诉编译器你要使用什么。 你可以这样说:-

#include <stdio.h>

您必须在最后输入此行:-

return 0;

那么你的完整代码是:-

#include <stdio.h>
int main(){
    printf("Hello World");
return 0;
}

要编译它并看到“Hello World”这个词,只需将此文件另存为 .c 文件并在您的程序目录中打开 cmd 并键入:-

gcc hello.c -o hello && hello

(将“hello.c”替换为您的文件名,将“hello”替换为您要放在 .exe 文件中的名称)

记住我的电脑是 Windows。所以我只能为 Windows 操作系统编译。

答案 12 :(得分:-2)

包括

int main(){

// printf, used to print (display) Hello World
printf("Hello World ! ");

// return 0, as the main function is of type int so it must return an integer value
return 0;

}