c++基础部分(1)
来源:互联网 发布:淘宝ps卖自己 编辑:程序博客网 时间:2024/04/30 14:27
简单的屏幕输出小程序
#include <iostream.h> /*#:预处理标志 iostream是标准的输入输出库*/
int main(int argc, char *argv[]) //main主函数作为程序的执行入口
{
std::cout<<"我初学c++\n";
int x;
std::cin>>x;
std::cout<<x;
return 0; /*由于该mian函数被声明为一个整型,因此返回了一个0,即 return 0;*/
}
在使用(std::)cout对象来输出信息的时候,它的后面要跟一个左移运算符”<<”,”<<”后面的内容都会被输出到屏幕上
“\n”是一个格式符号,有着换行的作用
在标准函数库中还有一个cin对象,它是用来接受键盘输入,它的使用方法与cout相反,cin后面加右移运算符”>>”
输出语句的使用
#include <iostream.h>
int main(int argc, char *argv[])
{
std::cout<<"五年级一班数学成绩表\n";
std::cout<<"首先是第一名许凡的成绩 \t"<<100;
std::cout<<std::endl;
std::cout<<"其次是第二名张友的成绩 \t"<<90+9;
std::cout<<std::endl;
/*5/8的前面加了一个float,它用来说明后面所跟的值的类型是个浮点数*/
std::cout<<"最后是末一名林杰的成绩 \t"<<(float)5/8;
std::cout<<std::endl;
return 0;
}
“\t”该符号是一个制表符,作用相当于按了一下tab键
“endl”该符号除了具有”\n”的换行功能外,还调用输出流的flush函数,刷新缓冲区,让数据直写入文件或者屏幕上
std:: 是什么
std:: 是个名字空间标识符,c++标准库中的函数或者对象都是在名字空间std中定义的,所以我们要使用标准库中的函数或者对象都要在std来限定
对象cout是标准库所提供的一个对象,而标准库在名字空间中被指定为std,所以在使用cout前要加上std:: ,这样编译器就会明白我们调用的cout是命名空间std中的cout
std都是在什么时候使用?
一般来说,std都是要调用c++标准库时使用。
如:使用标准库iostream时,要写上std;非标准库文件iostream.h,不用写
使用using释放cout,endl
#include <iostream.h>
using std::cout; /**使用using 将cout,endl给释放出来,那么在代码中就不需要写了*/
using std:endl;
int main(int argc, char *argv[])
{
cout<<"五年级一班数学成绩表\n";
cout<<"首先是第一名许凡的成绩 \t"<<100;
cout<<std::endl;
cout<<"其次是第二名张友的成绩 \t"<<90+9;
cout<<std::endl;
/*5/8的前面加了一个float,它用来说明后面所跟的值的类型是个浮点数*/
cout<<"最后是末一名林杰的成绩 \t"<<(float)5/8;
cout<<std::endl;
return 0;
}
更简单的方法,就是直接使用using namespace std来代替using std:: cout和usingstd::endl
#include <iostream.h>
using namespace std;
int main(int argc, char *argv[])
{
cout<<"五年级一班数学成绩表\n";
cout<<"首先是第一名许凡的成绩 \t"<<100;
cout<<std::endl;
cout<<"其次是第二名张友的成绩 \t"<<90+9;
cout<<std::endl;
/*5/8的前面加了一个float,它用来说明后面所跟的值的类型是个浮点数*/
cout<<"最后是末一名林杰的成绩 \t"<<(float)5/8;
cout<<std::endl;
return 0;
}
iostream和iostream.h的区别
iostream.h为非标准的输入输出流,这个.h的头文件是c语言格式的,由于当时还没有名字空间这个说法,所以也就不存在std这个名字空间标识符。自然用iostream.h也就用不着std或using namespace std了
iostream为标准输入输出流,它是c++规范的带有名称空间的头文件,它包含在std名字空间内
区别就是是否存在std名字空间的问题
名字空间的的好处
重名问题
此种做法是不冲突的
#include <iostream>
namespace a{
int b=5;
}
namespace c{
int b=6;
}
int main(int argc, char *argv[])
{
int b=8;
std::cout<<b<<" "<<a::b<<" "<<c::b<<std::endl;
return 0;
}
下列做法导致冲突
b引起了歧义
注释
第一种:/**/à从格式符加星号开始,到加星号格式符结束;可以注释次标签里面的所有内容
第二种://à标准的c++注释,只能注释本行的内容
函数的演示
函数又叫方法,即实现某功能或服务的代码块
#include <iostream.h>
int show(){
std::cout<<"hello world\n";
return 1;
}
int main(int argc, char *argv[])
{
show();
std::cout<<"main函数结束\n";
return 0;
}
函数的传参
#include <iostream.h>
int show(int a, int b){//a,b是形式上的参数
return a+b;
}
int main(int argc, char *argv[])
{
int a=3,b=4;
cout<<"请输入两个整数\n";
std::cin>>a;
std::cin>>b;
show(a,b);
std::cout<<"a+b="<<show(a,b)<<endl;
return 0;
}
函数的声明和定义
在程序中使用函数时,你必须先声明它然后再定义,声明的目的是告诉编译器你即将要定义的函数的名字是什么,返回值的类型是什么以及参数是什么。而定义则是告诉编译器这个函数的功能是什么,假如我们不声明,那么该函数就不能被其他函数调用。通常我们把函数声明叫做函数原型,而把函数定义叫函数实现。
#include <iostream.h>
int add(int,int); //函数的声明
int main(int argc, char *argv[])
{
return 0;
}
//此方法成为函数的定义
int add(int a,int b){
return a+b;
}
局部变量
在函数内部声明的变量为布局变量,局部变量的意思即该变量只存活于该函数中,假如该函数调用结束,那么该函数的寿命也就结束了。
全局变量
在任意函数外部定义的变量要做全局变量
c++的数据类型
c++有六种数据类型,它们分别是布尔型(boolean)、字符型(char)、双字符型(wchar_t)、整型(int)、单精度浮点型(float)和双精度浮点型(double)
再进行细分的话,整型又可以分为无符号型、长整型和短整型,双精度型还可以分为双精度型和长双精度型(除此之外静态变量(static)和外部变量(extern),寄存器变量和自动存储变量)
常量的值是不可以改变的,变量的值是可以改变的
什么是变量
其值是可以改变的量称为变量,一个变量应该有一个名字,这个名字叫做变量名。
比如说:“π“这个符号,它既是一个符号名,又代表数值3.1415926……
int a;
a=1; //这样变量a就代表数值1,或者说是变量a的值为1
也可以写成这样
int a=1; //可以将定义变量和赋值合并为一句,注意此处为对a的初始化而不能叫做赋值
赋值操作是在定义a之后进行的,而初始化则是与定义a同步进行的。
变量是存储信息的地方,是内存中的地址,在这个地址中可以进行读取和存储,当然这只是临时存储,当关闭计算机后,信息则会丢失。
变量及数据如何存储在内存上
当你在运行一个程序时,程序自动将一部分数据从磁盘文件上加载到随机存取存储器上(也要RAM),所有的变量都在RAM中生成,程序员在谈到内存时通常都是指RAM.RAM不能将数据和变量永久的保存在内存上,因此当程序员运行结束或者断点,后,这些数据和变量便从内存中释放或者丢失。
由于内存的这种特性,因此当我们定义一个变量时,我们必须告诉编译器该数据的内型,然后编译器则根据我们定义的类型自动为变量预留空间,然后做好该类型的值的准备。
进制的换算
10进制就是使用数字0-9,逢10进1。
任何数值的0次幂是1。
10进制就是使用数字0-7逢8进1。
布尔型(boolean)
布尔型可表示两个逻辑值,1和0,即真或者假。
bool 英文发音为[bu:l],意思是逻辑的,英译过来是布尔
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
/*
bool check;
check=false; */
// bool check=0;//该语句定义了一个布尔型变量,初始化为0(false)
bool check=true;
if(check==true){
cout<<"hello world\n";
}
return 0;
}
字符型
字符型标量存放的是字符,这个字符指的是计算机字符集中的字符(ASCII码),字符型变量只占一个字节
#include <iostream.h>
using namespace std;
int main(int argc, char *argv[])
{
for(int i=32;i<128;i++){
cout<<(char)i;
}
return 0;
}
特殊字符:
特殊字符
含义
\a
铃声(警报器)
\b
回退
\f
换页
\n
换行
\r
回车
\t
TAB键
\v
垂直制表
\’
单引号
\”
双引号
\?
问号
\\
反斜杠
\000
八进制
\xhhh
十六进制
双字节型(宽字符型)
char型变量课存储一个字节的字符,它用来保存英文字符和标点符号是可以的,但是存储汉字、韩文与日文却不可以,因为他们占据两个字节,所以c++又提供了wchar_t类型,也就是双字节类型,又叫宽字符类型。
wcout用于输出宽字符
整型概述
最基本的是int,一个字节保存8位二进制数,4*8=32,按大小分为长整型和短整型long short
sizeof:计算占据内存空间的大小
整型变量的定义
c++的变量都必须定以后才能使用,定义的作用是告诉编译器该变量占用多少字节,以便于分配内存。而赋值则是将数值存储到该内存空间中。
整型数据溢出后不会报错,到达最大值后,又从最小值开始计数,因此要注意赋值范围
浮点型变量
float类型:
长度为4个字节,是32位二进制
符号位为零是正,为1是负
如果要想精确的话,控制位数在6~7位。
setprecision控制输出位数 #include<iomanip>
double类型:
长度为8个字节,是64位二进制
如果要想精确的话,可以控制位数在15~16位。
常量
其值不能改变的,初始化过后,不能赋值
枚举型常量(enum)
允许用文字来代替数字
#include <iostream.h>
using namespace std;
int main(int argc, char *argv[])
{
enum num{zero,one,two,three,four};
cout<<zero<<"\t"<<one<<"\t"<<two<<"\t"<<three<<"\t"<<four<<endl;
return 0;
}
用enum定义的值从0开始计算的,往后的值依次增加1
以星期计算为例:
#include <iostream.h>
using namespace std;
int main(int argc, char *argv[])
{
enum day{
Sunday,Monday,Tuesday,Wednesday,Thurday,Friday,Saturday};
day today;
today=Monday;
if(today==Sunday||today==Saturday){
cout<<"周末休息\n";
}else{
cout<<"工作日\n";
}
return 0;
}
语句、块、表达式
语句是以分号作为结束标志,如果只有;,这也是一条语句,空语句,没有任何作用
语句中的空白一般忽略不计
块是以“{”开始,“}”结束,中间可以存放语句
凡是用于计算值的操作都可以看作是表达式,表达式总能返回一个值y=x=a+b
运算符
运算符是指可以进行运算操作的符号。而提供给运算符进行操作的数值我们把他们叫做操作符。所有的操作数由于都可以返回一个值,因此它们都是表达式。
c++有好几类运算符,其中最常见的是:
赋值运算符:实现对操作数赋值的功能 x=1 “=”就是赋值运算符
注意:常量都要放在右边,不能放在左右
数学运算符:实现对操作数进行数学运算的功能。1+2/ 1-2 “+”、“-”……都是运算符
求模运算符就是求出两个数的余数
#include <iostream.h>
int main(int argc, char *argv[])
{
for(int i=0;i<60;i++){
if(i%6==0){
cout<<"\n";
}
cout<<i<<"\t";//\t是制表符
}
return 0;
}
例:
a+=6;
这行语句将赋值运算符“=“与数字运算符”+“联合起来使用,它表示将右边的值与左边的值相加的结果再赋给左边的值。
a+=6其实与a=a+6的作用是相同的 “+=“读作加等于
其它的组合运算符还有
自加与自减
在c++中使某个值增加1称为自加,反之,使某个值减少1则为自减
前置运算符表示在赋值之前先进行自加或者自减,比如说先使值加1然后再取该值
#include <iostream.h>
using namespace std;
int main(int argc, char *argv[])
{
int a=9;
a++;
cout<<"a执行自加后的值:"<<a<<endl;
a--;
cout<<"a执行自减后的值:"<<a<<endl;
return 0;
}
先加:先执行自加,再取值
#include <iostream.h>
using namespace std;
int main(int argc, char *argv[])
{
int a=1;
++a;
cout<<"++a ="<<a<<endl;
return 0;
}
结果为:2
后加:先取值后增加
int a=1
a++;
cout<<"a++ ="<<a<<endl;*/
结果为:1
表达式的优先级
乘法或者除法的优先级高于加法或者减法
如果有括号的话,先执行括号中的表达式,再是括号外的表达式
关系运算符
关系运算符用来对两个表达式的值进行比较
int x=1,y=2;
if(x==y){
cout<<x;
} else
cout<<y;
return 0;
注意区分赋值运算符“=“和关系运算符”==“。”==“用于比较两个值是否相等,而“=“用于将右边的值赋给左边。
c++中提供了6种关系运算符
① != 读作不等于
② > 读作大于
③ < 读作小于
④ >= 读作大于等于
⑤ <= 读作小于等于
⑥ == 读作等于
关系运算符的作用:用来对两个表达式的值进行比较,并根据比较的结果返回一个真值或者一个假值。是真值还是假值取决于使用的关系运算符。
if语句
关键字if用于判断其后括号中的表达式是否为真,假如为真,那么执行括号后面的语句,如果为假,那么执行下一条语句。
#include <iostream.h>
using namespace std;
int main(int argc, char *argv[])
{
int x=3;
if(x==0){
cout<<"x等于0";
}
cout<<"x不等于0";
return 0;
}
注意:if语句的后面不能加分号,其原因是分号也是一条语句,假如加了分号,那么if(x==0);就变成了两条语句,第一条语句为if(x==0),而第二条则是空语句。
else语句
当if为真时,执行if后面的语句,否则执行else后面的语句
else-if语句
if(表达式){
语句
}else if(表达式){
语句
}
else if(表达式){
语句
}
else if(表达式){
语句
}
语句
如果if语句不成立的话,则执行else if语句,else if 语句可以有多条,如果if 和else if语句都不满足的话,就执行最后的语句
if语句的嵌套
在if语句中添加了一个if语句或者多个if语句,则称为if语句的嵌套,表达式为
if(表达式){
if(表达式){
if(表达式){
语句
}else {
if(表达式){
语句
}
}
}
}
带括号的嵌套语句
逻辑”与”运算符
逻辑“与”运算符(&&),如果运算符的两边都为真,那么才输出被判断的值
区别:”&&”和”&”是两种不同的运算符
#include <iostream.h>
using namespace std;
int main(int argc, char *argv[])
{
cout<<"请输入一个大于1的整数:\n";
int x;
cin>>x;
if(x>1&&x<100){
cout<<"x大于1小于100\n";
}
return 0;
}
逻辑”或”运算符
#include <iostream.h>
using namespace std;
int main(int argc, char *argv[])
{
cout<<"请输入一个大于1的整数:\n";
int x;
cin>>x;
if(x>1||x<100){
cout<<"x大于1小于100\n";
}
return 0;
}
当逻辑”或”运算符的两边的值的只有一边为真时,即可进行输出
逻辑”非”运算符
它只有一个准则,当你给的条件为假时,它才为真
逻辑运算符的优先级
一般的顺序是从左到右,如果你想改变优先级的顺序的话,那么就请用小括号来改变多个运算符的优先级
运算式的真假关系
计算机只能识别0和1,因此数字、符号、字母,计算机都能将其看为真值,空字符‘\0’的值为假值
三目运算符
#include <iostream.h>
using namespace std;
int main(int argc, char *argv[])
{
if(a>b){
z=a;
} else{
z=b;
}
return 0;
}
通常这样的比较会简化为:
z=(a>b)?a:b
?表示左侧的表达式为真的话,则将a(问号左边)的值赋给z,否则将b(问号右边)的值赋给z
举例解释如何运算的:
int a=1,b=2,z;
z=a>b?a:(a>b?a:b);
结果为:2
三目运算符的执行方向:从右至左
三目运算符一定要放在赋值语句中
三目运算符允许对不同型别的数值进行操作,也就是说可以同时操作一个浮点型变量和一个整型变量
当在运算时,三目运算符会自动转化为最高类型,进行计算和赋值。
后续部分将更新上来,等耐心等待
- c++STL基础部分(一)
- c基础部分
- C语言基础部分
- c++基础部分(1)
- CPP2-基础部分(1)
- Java基础部分(1)
- c基础部分代码整理
- 一份C/C++实习生笔试试卷(基础部分 )
- c++STL基础部分(二) 之模板
- Java面试基础部分(1)
- 机器学习(1):基础部分
- Java基础部分回顾(1)
- HTML部分基础总结(1)
- java基础部分(1)
- As3基础部分1
- Java基础(部分)
- 《more effective c++》基础部分读书笔记
- C++Primier笔记第一部分 基础
- Unix使用互斥量保护数据结构
- 你不在我身边
- 题目1157:中位数:快速排序思想
- 在巨人的肩膀上对软件测试的思考(二)
- Activity中的onNewIntent
- c++基础部分(1)
- 有才的美国人
- 乱码新解
- php生成短网址示例代码
- 忆起那年满天星花开正好
- 1周项目2-胖子伤不起
- Response运用
- 移植YAFFS文件系统遇到问题解决问题
- 手机短信删除了怎么恢复