目录
Hello~大家好,一日一更(?)的我又回来了,今天我们学习输入语句和类型转换(和上次没讲完的数据类型)。
4.1.数据类型:char
你可能会奇怪:
上一次不是讲了数据类型了吗?
别急,还记得char吗?没讲对吧,
char,意思是字符,那到了C++里,它就是存储字符的。
很合理
char,本身它的底层逻辑是一种整数,在上层就变成了字符,字符用这样表示:
'a';
它用单引号' '括起来,但是上面这个表达式实际上返回的是97,为什么呢?
C++的字符编码是用ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)表示的,所以a表示97,放一张图:
找到第二列第十行,就是我们的\n了。
我要新建一个cat字符,初始化为C:
char cat = 'C';
我们这时候直接cout显示它会怎么样?
cout << cat; //是字符还是ASCII编码?
呵呵,当然是字符了。
如果你的试验是数字(ASCII编码),那用cout.put()就行:
cout.put(cat); //字符
cout << cat; //不确定
-
小贴士:cout.put()是cout的一个成员函数(member function),以后讲类时会说到。
signed/unsigned char没用,就是char的一种。
4.2 强制类型转换
在C++中,不同的数据类型存储在它们该有的地方,但是有时需要打破这些规则,有3种方法,来康康吧
4.2.1 第一种:括号大法
比如,我要输出cat字符变量里C字母ASCII编码,怎么办呢?
看程序:
//第一种:括号大法
#include <iostream>
using namespace std;
int main() {
char cat = 'C';
cout << "the ASCII number of cat is " << (char) cat /*char (cat)*/ << " .";
return 0;
}
不难吧
怎么转换?别急,看
第一种格式:
(<转换目标类型>) <变量名称/常量表达式>;
第二种格式:
<转换目标类型> (<变量名称/常量表达式>);
比如,要把dog里的字符转换为int类型:
(int) dog; //int (dog);
把weight里的double转换为long long类型:
(long long) weight; //long long (weight);
但是,有时强制转换不能带来好处,比如下面:
#include <iostream>
using namespace std;
int main() {
double money = 128.20;
cout << "I have " << (int) money /*int (money)*/ << " RMB.";
return 0;
}
啊,我辛辛苦苦攒的2毛钱,全没了!!!
不用太担心,2毛钱。
就像钱主一样,丢失了他的两毛钱,就因为他错误的编写了一个程序。
4.2.2 字母大法
比如我要把1.0转换成long类型。
看格式:
1.0L;
这种方法我们不过多说。
4.2.3 static_cast<>()
话不多说,看格式:
static_cast<类型名>(变量/常量表达式);
这种方法非常好,但是输的字多。
比如我要把chick变量转换成unsigned int:
static_cast<unsigned int>(chick);
实际它是一个外观有点奇怪的函数,对吧。
4.3 输入
输入,顾名思义就是我从键盘输入的东西到我的程序里来了,我可以对它进行使用,修改,删除等操作,我们输入的东西本身就是一种数据类型,我们来看看。
4.3.1 cin输入
cin和cout是一对好兄弟,分别来自istream和ostream类,cout负责输出,cin负责输入。
cin的格式如下:
cin >> <输入对象>;
当然,跟cout一样,它也可以这样玩:
cin >> a >> b >> c;
输入时应该这样:
cin >> a >> b; //使用时应该输入:<a的数值> + <空格> + <b的数值>。
来看一眼程序,还记得上次那个(不明生物)吃胡萝卜那个程序吗,我们用cin改造一下:
#include <iostream>
using namespace std;
int main() {
int carrots;
cin >> carrots;
cout << "I have " << carrots << "carrots." << endl;
carrots = carrots - 2;
cout << "I eat 2 carrots,now I have " << carrots << " carrots.";
return 0;
}
就是我们可以自己输入胡萝卜的数量,看一眼运行结果:
知道了吧~不懂就问~
4.3.2 其他输入
其他的输入方式还有很多,看一眼:
cin >> a;
cin.get(a);
cin.getline(a);
cin.peek(a);
cin.read(a); //与cout.write()配对使用
get(a);
getchar(a);
//...
好吧,今天到这里吧,拜~
允许转载,请注明出处