第二天(基础 · 二)

   昨天,满课,加上KSC笔试倆小时,没时间,今天补上。说实话,我是希望进入联盟的,不管对我损益如何,就其鞭策我写程序而言,是非常好的。


2011-09-27
1、cout.put()成员函数。该函数是类ostream中第一的成员函数,用于显示一个字符,cout是ostream的对象,故可通过"."调用这个成员方法。比如下面语句都是在屏幕上打印字符'H'(H的ASCII码为72):

cout.put(72) << endl;
cout.put('H') << endl;
cout << 'H' << endl;
cout << (char)72 << endl;
其中当然还有使用字符变量输出的,限于篇幅就不具体举例的了。

既然使用"<<"可显示字符,为什么会有put()这个成员方法呢?这是有历史原因的,早期的C++版本中,cout会将字符变量显示为字符,却将字符常量显示为数字。为什么会造成后者的现象呢?早期版本中,C++会将char型字符常量存储为int型,cout无法区分接受的int型常量到底是char还是int,所以一律显示为数字。于是就有put()函数的出现来解决这个问题,put()就这样一直沿用到现在。 

2、char在默认情况下既不是有符号,也不是没符号。原则是,如果将char视作数值类型,且数值是非负、值小于255的,用unsigened 修饰。只用与储存字符的,不需要修饰。
3、C++中布尔类型与整型是可以相互转换的。
bool isTrue = true;
int ena = true;//等效于ena=1,同理ena = false等效于ena=0
bool isReady = -5;//任何非零数会转换成true
bool isGood = 0;//零会被转换成false
4、C++一般用const关键字来限定常量,而不是#defined。
5、float至少是6位有效位;double至少为15位有效位。
6、浮点数默认为double型,需要表示为float或long double型,加后缀F或f和L或l。
7、除法“/”已经被重载。当操作数都为int型,结果为int型,小数部分被截去。这个结果很重要,有助于理解取模运算:a%b=a-b*(a/b),其中a、b为有符号的整型 (不能为浮点型);当操作数都为float型,结果为float型;当操作数都为double型,结果为double型。
8、类型转换。
I、隐式转换。规则是,总是向一方能表示另一方全部可能数据转换。比如:double/float = double。对于赋值语句,如下例子:
short s1 = 20;
short s2 = 35;
short s3 = s1 + s2;
C++的执行过程是,将s1、s2转换成int型,而后执行加法运算,之后又将至转换成short。也即,系统是将int型视作最自然地类型,情况与一个没学二进制运算的人进行二进制加法一样,他首先会将二进制转换成十进制,运算,之后再转换成二进制。
II、强制转换。例如int a;将a转换成long可采用如下两种形式:
(long)a;//C风格
long(a);//C++风格,来源是将long()看作一个函数

    今天的笔记有点短,附上个课后编程题,加长一下:

/*Write a program that asks the user to enter the number of seconds as an integer value(use type long) 
and that then displays the equivalent time in days, hours, minutes, andseconds. Use symbolic constants 
to represent the number of hours in the day, the number of minutes in an hour, and the number of seconds 
in a minute. 

The output should look like this:
Enter the number of seconds: 31600000
31600000 seconds = 365 days, 46 minutes, 40 seconds
*/
//P64 4
#include <iostream>

int main()
{
	using namespace std;
	const int HOUR_PER_DAY = 24;
	const int MINUTE_PER_HOUR = 60;
	const int SECOND_PER_MINUTE = 60;

	long whole;
	int days,minutes,seconds;

	cout << "Enter the number of seconds: ";
	cin >> whole;
	days = (int)whole / (SECOND_PER_MINUTE * MINUTE_PER_HOUR * HOUR_PER_DAY);
	minutes = int(whole / (SECOND_PER_MINUTE)) % 60;
	seconds = whole % 60;
	cout << whole << " seconds = " << days << " days, " << minutes << " minutes, " 
		<< seconds << " seconds. " << endl;
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值