您的位置:首页 > 编程语言 > C语言/C++

C++幼儿园[2] - 数据类型和基本语法

2017-01-22 16:05 204 查看
首先对上一篇教程做点补充

关于创建的项目在哪个地方



比如我创建了一个叫test的项目,找到它所在的位置(在创建时可以选择)

这个
test.sln
就是VS工程的入口,解决方案(solution),打开它就会自动开启VS。

名字为
test
的文件夹内就有你写的源码文件,
main.cpp


关于断点

执行时,会在断点处停顿,停顿的时候,断点所在的那一行并不会执行

这时你可以将鼠标移到代码中的变量上查看他们的值

也可以点菜单栏里的“继续”

也可以选择菜单栏里的“逐语句”,“逐过程”,即一句一句执行。



编辑器美化

在菜单栏的 工具-选项 里,可以设置主题颜色(皮肤)



字体和字号



显示行号



众所周知,数据在计算机内都是以二进制表示的,不太懂的可以先温习一下

十进制二进制十六进制(0x)
000
101
2102
3113
41004
51015
101010A
111011B
121100C
131101D
141110E
151111F
161000010
由表可以看出,

2进制的每一个位置,占1个bit,称为 1 位[/b]

16进制的每一个位置,占4个bit

也就是 1 Byte = 8 bit = 2个16进制位。

1 Byte (称为 字节)表示的数最大为 28−1=255

常用基本数据类型

数据类型所占空间(字节)最大值或范围
int(整数,integer)4231−1
float(单精度浮点数,小数)43.4×1038 + 7位有效数字
double(双精度浮点数,小数)81.7×10308 + 15位有效数字
char(字符,character)1-128 ~ 127
bool(布尔)10(false)或1(true)

变量的赋值

赋值的格式:

变量类型 变量名 = 值

例如下面这些赋值

#include<iostream>
using namespace std;

void main()
{
int a = -18; //直接赋值整数
int b = -18 + 99 + a; //等号右边可做运算
int c = 0xABCDEF; //0x是16进制表示的前缀

float d = 1997.0806;

double g = 1.123456789;

char h = 102;//试试输出h。把整数赋值给char型变量,输出时就转到ASCII码
char i = 'i'; //字符数是用单引号引起来的字符。
char j = 'abcd';//试试?
char k = '\102';// 转义符 "\"
char l = '\xAF';// "\x"后接两位16进制数

bool n = 1 < 2;

}


解释几句:

char型,可以理解为它储存的就是整数,但cout时会转到ASCII码表中对应的字符。如果赋给他的值超过了127,就会产生溢出。

char c=129
此时c的值就是 -127。

溢出规则这里就不讲了,自己百度or群里讨论or等老师讲

关于转义符
\
的两种用法

一般来说它会把紧跟在它后面的那个东西转成含有特殊含义的字符。

比如
\n
表示换行符,
\t
表示制表符(Tab键),
\102
对应ASCII码的
B


一个比较有趣的是
\a
,表示鸣铃(alert),你可以输出它然后运行听听。

第二个用法,就是把包含在双引号
""
之间的符号转变为它们本来的意思。比如
cout<<"\"";
就会输出一个
"
,不加
\
符号的话,三个引号就无法识别了。

(所以,怎么输出一个
\
呢?)

另外,
const
关键字用来声明常变量。例如

const double pi = 3.1415926;


这类变量的值在声明后无法修改,所以,在声明的同时就应赋值。



const int i;
i=0;


也是不行的,会报错

运算符

常用的包括
+
-
*
/
=
以及
<
>
>=
<=
==
!=


还有
++
--
和衍生的
+=
-=
*=
/=


我们知道,编程语言中,我们写
a=b
是把b的值赋给a。

int a = 0;
int b = 1;

a = b - 1;
a = b * 5; // * 是乘号
a++; //a的值自增1,即 a=a+1,执行之后a=1
++a; //同上,执行之后a=2
a*=3; //即a=a*3


++a和a++的区别我就不bb了,注意就好。

运算符优先级:

*
/
优先于
+
-


()
内的优先其他运算符执行。

为了可读性,即使有的地方能用优先级规则判别出来,括号也都要加,比如

b+a*100+1
b+(a*100)+1 //有括号清爽多了


控制语句

最基础的if…else

if (1 > 2)
{
cout << "1>2";
}
else if(1 < 2)
{
cout << "1<2";
}
else if(1 == 2)
{
cout << "1=2";
}
else
cout << "wtf?";


这里,1<2是true的,所以会执行
else if
中的语句。

if
,
for
,
while
等语句后的
{}
内只有一句话的时候,花括号可省略,比如上面的
else


但是如果没加花括号,又写了两句话呢?

if(1==2)
cout<<"a";
cout<<"b";


那当然就按顺序执行了。所以这里只会输出
b


要注意,if后的括号内应接true或false。不是bool型变量则会转换成bool型。

c++中,0自动转成false非0的数转成true

所以下面的语句会输出if中的内容。

bool flag = false;
if(flag)
cout <<"flag comes true";

int n = 10086;
if(n)   //或者 if(10086)
{
cout<<n;
}


警惕下面的错误

int a=10086;
if(a = 1)  //注意这里写成了"=",把1赋值给了a
cout << "exm?";


试试这个?

这里仍然会输出exm。

它等价于
if(1)
,即
if
后的括号内,先进行运算,再判断最后的运算结果。

最常用的for

//输出0~7,每两个数中间一个空格。
for (int i = 0; i < 8; i++)
{
cout << i << " ";
}


for后的括号内有3个语句块,作用分别是

(赋值;继续循环的条件;每循环一次所做的改变)

所以像这样写都是可以的

int i; //在for之前声明变量
for (i = 0; i < 8; i++)
cout << i << " ";
cout << endl;

i = 10; //在for之前给变量赋值
for (; i > 0; i = i - 1) //这里第一个语句块空着,但要加分号
cout << i << " ";
cout << endl;


while

先看一个示例

//输出0~9
int i=0;
while (i < 10)
{
cout << i << endl;
i++;
}


while的意思是 当……时

也就是当i<10时(只要i<10),就进入循环。

执行到i=9时,在i++将i变成10之后,进行判断,i=10<10,结果是false,所以跳出循环。

由于while的括号内没有给变量增值的语句,所以要在循环体内做改变。

while经常用于不知道具体循环次数的情况

int i=0;
int n = 0;
while (i < 10)
{
cin >> n; //cin为输入语句,后接">>",给n赋值。
if (n > 10)
i += 4;
else
i += 1;
}


break&continue

都用在循环中。

break表示跳出当前的循环

//由于break语句,输出0~5
for (int i = 0; i < 10; i++)
{
if (i > 5)
break;
cout << i << " ";
}

while (true)//由于括号内总为真,所以如果没有break,就会造成死循环
{
cout << "没时间解释了,快输入0!"
int n;
cin >> n;
if (n == 0)
break;
}


continue表示继续下一轮当前的循环

while (true)
{
cout << "没时间解释了,快输入0!"
int n;
cin >> n;
if (n != 0)//不等号。如果n不等于0,则执行continue
continue;
}


为什么我上面强调是“当前的”循环呢?其实,break和continue只对最内层的循环起作用

//嵌套循环的例子
for (int i = 0; i < 10; i++)//外层循环
{
for (int j= 0; j < 10; i++)//内层循环
{
int n;
cin >> n;

if (n == 0)
break;
cout << "j";
}
cout << "i";
}


上面的例子中,即使每次都输入0,也会输出10次
i
,每次被打断的都是
j
的输出。

自己动手试试:

输出一个
\


声明一个整型变量,
cin
一个小数

声明一个布尔型变量,赋给整型变量,再输出

自己的小作业:

求0~100中的质数,并输出到屏幕上

作业(要交 要交 要交):

写一个计算平均绩点(GPA, Grade Point Average)的程序

要求输入各科学分(比如高数5分)和成绩(百分制),最后输出GPA。

具体的流程需自己设计,且有足够的提示语句,能让别人知道怎么用。

附公式(C代表学分 credit,GP代表绩点 grade point)

GPA=∑ni=0(Ci×GPi)∑ni=0Ci

分数和绩点的转换关系,自行百度“GPA”,按咱们学校的版本来算。

(其实就是加权绩点,权重为学分)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: