C++幼儿园[2] - 数据类型和基本语法
2017-01-22 16:05
204 查看
首先对上一篇教程做点补充
关于创建的项目在哪个地方
![](https://img-blog.csdn.net/20170122221634353?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzYwNTkxMjY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
比如我创建了一个叫test的项目,找到它所在的位置(在创建时可以选择)
这个
名字为
关于断点
执行时,会在断点处停顿,停顿的时候,断点所在的那一行并不会执行。
这时你可以将鼠标移到代码中的变量上查看他们的值
也可以点菜单栏里的“继续”
也可以选择菜单栏里的“逐语句”,“逐过程”,即一句一句执行。
![](https://img-blog.csdn.net/20170122222823317?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzYwNTkxMjY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
编辑器美化
在菜单栏的 工具-选项 里,可以设置主题颜色(皮肤)
![](https://img-blog.csdn.net/20170122223038702?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzYwNTkxMjY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
字体和字号
![](https://img-blog.csdn.net/20170122223252531?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzYwNTkxMjY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
显示行号
![](https://img-blog.csdn.net/20170122223438873?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzYwNTkxMjY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
众所周知,数据在计算机内都是以二进制表示的,不太懂的可以先温习一下
由表可以看出,
2进制的每一个位置,占1个bit,称为 1 位[/b]
16进制的每一个位置,占4个bit
也就是 1 Byte = 8 bit = 2个16进制位。
1 Byte (称为 字节)表示的数最大为 28−1=255
变量类型 变量名 = 值
例如下面这些赋值
解释几句:
char型,可以理解为它储存的就是整数,但cout时会转到ASCII码表中对应的字符。如果赋给他的值超过了127,就会产生溢出。
如
溢出规则这里就不讲了,自己百度or群里讨论or等老师讲
关于转义符
一般来说它会把紧跟在它后面的那个东西转成含有特殊含义的字符。
比如
一个比较有趣的是
第二个用法,就是把包含在双引号
(所以,怎么输出一个
另外,
这类变量的值在声明后无法修改,所以,在声明的同时就应赋值。
像
也是不行的,会报错
还有
我们知道,编程语言中,我们写
++a和a++的区别我就不bb了,注意就好。
运算符优先级:
为了可读性,即使有的地方能用优先级规则判别出来,括号也都要加,比如
这里,1<2是true的,所以会执行
当
但是如果没加花括号,又写了两句话呢?
那当然就按顺序执行了。所以这里只会输出
要注意,if后的括号内应接true或false。不是bool型变量则会转换成bool型。
c++中,0自动转成false,非0的数转成true。
所以下面的语句会输出if中的内容。
警惕下面的错误
试试这个?
这里仍然会输出exm。
它等价于
for后的括号内有3个语句块,作用分别是
(赋值;继续循环的条件;每循环一次所做的改变)
所以像这样写都是可以的
while的意思是 当……时
也就是当i<10时(只要i<10),就进入循环。
执行到i=9时,在i++将i变成10之后,进行判断,i=10<10,结果是false,所以跳出循环。
由于while的括号内没有给变量增值的语句,所以要在循环体内做改变。
while经常用于不知道具体循环次数的情况
break表示跳出当前的循环
continue表示继续下一轮当前的循环
为什么我上面强调是“当前的”循环呢?其实,break和continue只对最内层的循环起作用
上面的例子中,即使每次都输入0,也会输出10次
自己动手试试:
输出一个
声明一个整型变量,
声明一个布尔型变量,赋给整型变量,再输出
自己的小作业:
求0~100中的质数,并输出到屏幕上
作业(要交 要交 要交):
写一个计算平均绩点(GPA, Grade Point Average)的程序
要求输入各科学分(比如高数5分)和成绩(百分制),最后输出GPA。
具体的流程需自己设计,且有足够的提示语句,能让别人知道怎么用。
附公式(C代表学分 credit,GP代表绩点 grade point)
GPA=∑ni=0(Ci×GPi)∑ni=0Ci
分数和绩点的转换关系,自行百度“GPA”,按咱们学校的版本来算。
(其实就是加权绩点,权重为学分)
关于创建的项目在哪个地方
比如我创建了一个叫test的项目,找到它所在的位置(在创建时可以选择)
这个
test.sln就是VS工程的入口,解决方案(solution),打开它就会自动开启VS。
名字为
test的文件夹内就有你写的源码文件,
main.cpp
关于断点
执行时,会在断点处停顿,停顿的时候,断点所在的那一行并不会执行。
这时你可以将鼠标移到代码中的变量上查看他们的值
也可以点菜单栏里的“继续”
也可以选择菜单栏里的“逐语句”,“逐过程”,即一句一句执行。
编辑器美化
在菜单栏的 工具-选项 里,可以设置主题颜色(皮肤)
字体和字号
显示行号
众所周知,数据在计算机内都是以二进制表示的,不太懂的可以先温习一下
十进制 | 二进制 | 十六进制(0x) |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
2 | 10 | 2 |
3 | 11 | 3 |
4 | 100 | 4 |
5 | 101 | 5 |
10 | 1010 | A |
11 | 1011 | B |
12 | 1100 | C |
13 | 1101 | D |
14 | 1110 | E |
15 | 1111 | F |
16 | 10000 | 10 |
2进制的每一个位置,占1个bit,称为 1 位[/b]
16进制的每一个位置,占4个bit
也就是 1 Byte = 8 bit = 2个16进制位。
1 Byte (称为 字节)表示的数最大为 28−1=255
常用基本数据类型
数据类型 | 所占空间(字节) | 最大值或范围 |
---|---|---|
int(整数,integer) | 4 | 231−1 |
float(单精度浮点数,小数) | 4 | 3.4×1038 + 7位有效数字 |
double(双精度浮点数,小数) | 8 | 1.7×10308 + 15位有效数字 |
char(字符,character) | 1 | -128 ~ 127 |
bool(布尔) | 1 | 0(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”,按咱们学校的版本来算。
(其实就是加权绩点,权重为学分)
相关文章推荐
- C++ 基本语法之变量(指针)与数据类型(占用字节大小)
- C++语法一(概述,程序基本元素,数据类型)
- C++基本数据类型与输入输出
- Dev-C++下基本数据类型学习小结
- C++/JAVA基本数据类型长度
- Java 基本语法——数据类型
- 【C/C++语言入门篇】-- 基本数据类型
- C++基本数据类型与输入输出
- C/C++基本数据类型---数组
- C++与Java基本数据类型比较
- LotusScript基本语法知识……变量和数据类型
- 【转】【C/C++语言入门篇】-- 基本数据类型
- C++中基本数据类型的较特别形式的初始化
- 16位计算机中C++常用基本数据类型描述 和 字符常量 摘自 钱能C++教程
- C/C++基本数据类型
- c++ 基本数据类型长度(vc6.0 32位机;
- C++ 基本数据类型
- C++基础(二) 基本数据类型与数值表达式
- 【C/C++语言入门篇】-- 基本数据类型
- php学习笔记(3):PHP基本语法和数据类型: