【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的缩写,不是必须要加在结尾的,有没有均可,按需。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值