第2课 程序格式与数据定义

学习目标:

  • 通常程序(函数)包含4个部分(有些可省略)
  • 数据分为常量和变量
  • 常量和变量的定义
  • 4种基本数据类型:bool, char, int, float/double
  • 掌握部分C++关键字:const, bool, char, short, int, long, float, double, sizeaof, true, false

学习内容:

  1. 程序格式
  2. 定义数据
    1. 常量
    2. 变量
    3. 基本数据类型(bool, char, int, float/double)
    4. sizeof()

扩展学习内容

相比于C++98标准,C++11标准中整型的最大改变就是多了long long int数据类型。同其他的整型一样,要了解平台上long long int大小的方法就是查看(或中的宏)。

在limits.h中定义的宏中,与long long int整型相关的一共有3个:LLONG_MIN、LLONG_MAX和ULLONG_MAX,它们分别代表了
平台上最小的long long int值、最大的long long int值,以及最大的unsigned long long int值。

注意下面的类型表示是等价的:
long long、signed long long、long long int、signed long long int;
容易知道,unsigned long long和unsigned long long int也是等价的。

在Dev-C++的较低版本中,如Dev-C++ 5.11,gcc 4.9.2 64bit,要使Dev-C++支持C++11标准,可能需要添加编译选项 -std=c++11。如图
第2课 程序格式与数据定义_第1张图片
在limits.h中定义的宏中,与long long int整型相关的一共有3个:LLONG_MIN、LLONG_MAX和ULLONG_MAX,其各自的值列出如下:

  • LLONG_MIN: -9223372036854775808
  • LLONG_MAX: 9223372036854775807
  • ULLONG_MAX: 18446744073709551615

如果要查看在limits.h中定义的其他宏的值,可以参考下面的代码获取。

#include
#include
//#include
using namespace std;

int main() {
	cout << "INT_MIN: " << INT_MIN << endl;			//INT_MIN: -2147483648
    cout << "INT_MAX: " << '+' << INT_MAX << endl;	//INT_MAX: +2147483647
    cout << "UINT_MAX: " << UINT_MAX << endl;		//UINT_MAX: 4294967295
    cout << "LONG_MIN: " << LONG_MIN << endl;		//LONG_MIN: -2147483648
    cout << "LONG_MAX: " << LONG_MAX << endl;		//LONG_MAX: 2147483647
    cout << "ULONG_MAX: " << ULONG_MAX << endl;		//ULONG_MAX: 4294967295
	//所以这样看起来long和int是一样的,在64位机器上。
	cout << "LLONG_MIN: " << LLONG_MIN << endl;		//LLONG_MIN: -9223372036854775808
	printf("min of long long: %lld\n", LLONG_MIN);
    cout << "LLONG_MAX: " << LLONG_MAX << endl;		//LLONG_MAX: 9223372036854775807
    printf("max of long long: %lld\n", LLONG_MAX);
    cout << "ULLONG_MAX: " << ULLONG_MAX << endl;	//ULLONG_MAX: 18446744073709551615
    printf("max of unsigned long long: %llu\n", ULLONG_MAX);
	return 0;
}

运行代码,输出如下
INT_MIN: -2147483648
INT_MAX: +2147483647
UINT_MAX: 4294967295
LONG_MIN: -2147483648
LONG_MAX: 2147483647
ULONG_MAX: 4294967295
LLONG_MIN: -9223372036854775808
min of long long: -9223372036854775808
LLONG_MAX: 9223372036854775807
max of long long: 9223372036854775807
ULLONG_MAX: 18446744073709551615
max of unsigned long long: 18446744073709551615


练习:

2.1 显示字符的ASCII码
输入一个a~z的小写字母并存入字符型变量ch,再将之赋给一个整形变量a,最后输出其ASCII码。

#include
using namespace std;

int main() {
	char ch;
	int a;
	cin >> ch;	//b
	a = ch;
	cout << a << endl;	//98
	return 0;
}

2.2 大写字母与小写字母转换
将小写字母转换成大写字母,将大写字母转换为小写字母。

#include
using namespace std;

int main() {
   string str;
   int len;
   getline(cin, str);
   len = str.length();
   for(int i=0; i<len; i++) {
   	if(str[i]>='a' && str[i]<='z')
   		str[i] -= 32;
   	else if(str[i]>='A' && str[i]<='Z')
   		str[i] += 32;
   }
   cout << str << endl;
   return 0;
}

函数getline()的语法形式如下:
getline(cin, temp, delim);

  • cin是标准输入流函数
  • temp是用来存储字符的变量名
  • delim是结束标志

在使用getline()读入一整行时,如果前面使用getchar()或cin读入了一个字母,但是不会读入后续换行符号(\n)或者空格的输入时,再接getline()就容易出现问题。这是因为getchar()输入后,敲回车,产生的换行符仍然滞留在输入流,接着就被getline(cin, s)给读进去了,此时的s=“\n”,所以实际上s只是读入了一个换行符\n。
而若是前面使用getline(),再又用getline()进行读入,此时不会发生问题。getline()在读入结束的回车后,结束符不放入缓存区,会将读入的\n直接去除,下一个输入前,缓冲区为空,并不会因为回车留下\n。
如果前面用了cin、getchar(),可以在后面使用一个getchar()吃掉接下来的换行,然后再使用getline()。

2.3 计算数据类型占用的内存字节数
定义int、float、double类型的变量各一个,并依次输出其数据类型占用的字节数。

#include
using namespace std;

int main() {
   short a;
   int b;
   long l;
   long long ll;
   float c;
   double d;
   cout << "sizeof(short): " << sizeof(a) << ", " << sizeof(short) << endl;
   cout << "sizeof(int): " << sizeof(b) << ", " << sizeof(int) << endl;
   cout << "sizeof(long): " << sizeof(l) << ", " << sizeof(long) << endl;
   cout << "sizeof(long long): " << sizeof(ll) << ", " << sizeof(long long) << endl;
   cout << "sizeof(float): " << sizeof(c) << ", " << sizeof(float) << endl;
   cout << "sizeof(double): " << sizeof(d) << ", " << sizeof(double) << endl;
   return 0;
}

运行代码,输出如下
sizeof(short): 2, 2
sizeof(int): 4, 4
sizeof(long): 4, 4
sizeof(long long): 8, 8
sizeof(float): 4, 4
sizeof(double): 8, 8

可见,对于整数数据类型,int和long都是32位的(4个字节),只有long long 才是64位(8个字节)。

你可能感兴趣的:(《C++案例趣学》习题参考代码,少儿编程,c++,c语言,青少年编程)