我待编程如初恋
2021-03-20 19:58
采纳率: 100%
浏览 49

同一段代码,C++编译成功,C语言编译出错,这是为什么呢?

#include <stdio.h>
using namespace std;
int main(){
	int n;
	scanf("%d",&n);
	int result=0;
	for(int i=0;i<n;i++){
		int w,score;
		scanf("%d%d",&w,&score);
		result+=w*score;
	}
	if(result<0)
		printf("0\n");
	else
		printf("%d\n",result);
	return 0;
} 

为什么同样的代码用C++就过了,用C语言就会编译出错大家知道么?

  • 点赞
  • 收藏

3条回答 默认 最新

  • 四海一叶秋 2021-03-20 20:22
    已采纳

    using namespace std;在上面代码是多余的。

    .c文件,变量声明要放花括号内开头的地方。

    #include <stdio.h>
    int main() {
    	int n,i;
    	int result = 0;
    	scanf("%d", &n);
    	for (i = 0; i<n; i++) {
    		int w, score;
    		scanf("%d%d", &w, &score);
    		result += w*score;
    	}
    	if (result<0)
    		printf("0\n");
    	else
    		printf("%d\n", result);
    	return 0;
    }
    点赞 2 打赏 评论
  • 工程师小星星 2021-03-20 20:36

    使用C语言编译的情况下:

    • C语言没有命名空间(namespace)的概念,C语言头文件并没有存放在命名空间中,因此使用C语言编译时候在C文件中如果用到类似stdio.h的头文件时,不能使用C++中的命名空间语句(namespace)。

    使用C++语言编译的情况下:

    • C语言程序中各种功能基本上都是由函数来实现的,并包装成各种头文件,C++从C语言继承了相关函数库。
    • 因此在C++程序中可以使用C语言的函数库,文件中如果只包含类似stdio.h这样.h后缀的头文件的时候,可以不使用namespace语句。
    • 但是如果包含<iostream>这样的头文件的时候,由于这些头文件的函数都是在命名空间std中声明的,因此在程序中要对命名空间std作声明。需要使用using namespace std; 语句

    你这段程序如果改成如下这样,就可以在C++和C语言下都编译通过啦

    #include <stdio.h>
    
    int main(){
    	int n;
    	scanf("%d",&n);
    	int result=0;
    	for(int i=0;i<n;i++){
    		int w,score;
    		scanf("%d%d",&w,&score);
    		result+=w*score;
    	}
    	if(result<0)
    		printf("0\n");
    	else
    		printf("%d\n",result);
    	return 0;
    } 

    欢迎采纳本答案呀

    点赞 1 打赏 评论
  • 日月星河XUED 2021-03-20 20:12

    很简单,虽然stdio.h是c语言的头文件但是后面的using namespace std;只有c++可以用。

    点赞 打赏 评论

相关推荐 更多相似问题