【C++学习笔记】二、对于C++语法新手常犯的错误

从python到C++,表示需要注意的习惯性细节还是蛮多的,作为一个不看就忘星人,还是决定老老实实把一个个易错点记录下来,也再一次加深印象。

首先看个样例,来自谭浩强老师的《C++程序设计第3版》,第一章习题9:

#include <iostream>
using namespace std;
int main()
{
	int add(int x, int y);
	int a,b,c;
	a = 5;
	b = 7;
	c = add(a,b);
	cout << "a + b =" << c <<endl;
	return 0;
}
int add(int x, int y)
{
	int z;
	z = x + y;
	return(z);
}

1. 对于分号的问题:

(1)预处理指令后边无分号:

它是一个包含指令,作用是将iostream的内容包含到该命令所在的程序文件中,代指该命令,iostream是i-o-stream组成的,意思是输入输出流,也就是向程序提供输入或输出信息的。

#include <iostream>

(2)命名空间后边有分号:

表示c++标准库中的类和函数都是在命名空间std中声明的。

using namespace std;

(3)如有定义类名,则无分号:

#include <iostream>
using namespace std;
class Student

(4)函数名后边无分号,包括main函数和所有的子函数:

int main()
{
}

int add(int x, int y)
{
}

注意:在一个程序中main函数有且只有一个,且必须为int型,且不管main在哪里,程序都是从main函数开始执行的

(5)函数体大括号内的所有,每行都得有分号,包括变量和函数的声明,以及return

int main()
{
	int add(int x, int y);
	int a,b,c;
	a = 5;
	b = 7;
	c = add(a,b);
	cout << "a + b =" << c <<endl;
	return 0;
}

2. 对于子函数和主函数的顺序问题:

(1)子函数写在main函数前边,系统能够识别子函数已经被定义,因此无须在main函数中国声明,直接调用,如下例子:

//求两数中的最大值
#include <iostream>
using namespace std;
int max(int x, int y)
{
    int z;
    if(x>y) z = x;
        else z =y;
    return(z);
}
int main()
{    
    int a,b,m;
    cin >> a >> b;
    m = max(a,b);
    cout << "max = " << m << '\n';
    return 0;
}

(2)如果main函数写在前边,必须声明子函数,此时系统会根据函数声明时给定的信息对函数的合法性进行检查,否则系统无法找到子函数,就会认为没有定义而报错,将上边的例子改写如下:

//求两数中的最大值
#include <iostream>
using namespace std;

int main()
{    
    int max(int x, int y);
    int a,b,c;
    cin >> a >> b;
    c = max(a,b);
    cout << "max = " << c << '\n';
    return 0;
}
int max(int x, int y)
{
    int z;
    if(x>y) z = x;
        else z =y;
    return(z);
}

3. 对于声明:

所有的变量和函数使用前(第一次出现前)都需要声明,容易忽略的是调用函数时赋值的那个变量,如最开始例子中的变量c,一定要先声明才可以:

int add(int x, int y);
int a,b,c;
a = 5;
b = 7;
c = add(a,b);

4. 对于return:

return 后边是0的时候,括号加不加都可以,但是分号一定要有,即

return 0;
//或者
return(0)

return 0 是表示如果程序正常结束,则向系统返回一个0值,若不能正常结束,则是默认返回-1

这句话如果没有程序也能执行,但是目前来看是需要加上的,后续学习到的时候再讨论它深层次的意义。

5. 关于注释:

//只能注释单行

/*可以注释一段*/

6. 关于输入输出:

cin是键入,此时多个输入的只能用一个或多个空格隔开;

cout是输出;

endl是换行,endline的缩写,不是必须要加在结尾的,有没有均可,按需。

猜你喜欢

转载自blog.csdn.net/zl3090/article/details/84300083
今日推荐