zoukankan      html  css  js  c++  java
  • Visual C++ 2008入门经典 第二章 数据 变量和计算 简单

    /*
    第二章 数据 变量和计算
    
    2.1 C++程序结构
        2.1.1 程序注释
    	2.1.2 #include 指令---头文件
    	2.1.3 命名空间和using声明
    	2.1.4 main()函数
    	2.1.5 程序语句
    	2.1.6 空白
    	2.1.7 语句块
    	2.1.8 自动生成的控制台程序
    
    2.2 定义变量
        2.2.1 命名变量
    	2.2.2 声明变量
    	2.2.3 变量的初始值
    	//变量写入初值还有另外一种方法,称作函数表示法,
    	//int val(0);
    	//int count(10);
    
    2.3 基本数据类型
       //其基本的类型分为3类,即存储整数的类型,存储非整数值的类型--它们称为浮点类型,以及指定空的值集或者不指定任何类型的void类型
       2.3.1 整型变量
    	   short feetPerPerson=2;
    	   short int feetPerPerson=2;
    	   表示是一样的,short是短整型变量,二个字节
    	   long bigNumber(1000000L); 长整型变量,四个字节
       
       2.3.2 字符数据类型
           可以存储在char型变量中的整数的值域是从-128~127 一个字节长度
    	   wchar_t宽字符类型 值域为0~65535
       
       2.3.3 整型修饰符
           默认情况下,char int short或long将存储有符号的整数值 signed
    	   unsigned 无符号说明,无符号数不能表示负数,最小表示数为0,但他表示的整数比有符号的要多一位
       
       2.3.4  布尔类型
           //注意: TRUE和FALSE 写成大写字母,不是C++中的关键字,它们只是在MFC内部定义的符号,还要注意,TRUE和FALSE不是合法的bool值
    	   //所以不能混淆true和TRUE
       
       2.3.5 浮点类型
           double in_to_mm = 25.4; 8个字节位置
    	   float pi = 3.14159f; 占用4个字符位置
    	   ISO/ANSI C++中的基本类型
    	   bool            1    trua或者false
    	   char            1    -128~+127
    	   signed char     1    -128~+127
    	   unsigned char   1    0~255
    	   wchar_t         2    0-65525
    	   short           2    -32768~+32768
    	   unsigned short  2    0~65525
    	   int             4    -2147483648~+2147483648
    	   usinged int     4    0~4294967295
    	   long            4    -2147483648~+2147483648
    	   unsigned long   4    0~4294967295
    	   float           4 
    	   double          8
    	   long double     8
       
       2.3.6 字面值
    
       2.3.7 定义数据类型的同义词
       typedef关键字能够使您为现有的类型定义自己的类型名称
       typedef long int BigOnes;
       BigOnes mynum = 100;
    
       2.3.8 具有特定值集的变量
       有时需要一些具有一个有限的可能值集的变量,标记有效地引用这些值,C++中有一种处理这种情况的工具,称之为枚举
       enum Week{Mon, Tues, Wed, Thurs, Fri, Sta, Sun} thisWeek;
       日期的每个名称都被定义表示一个固定的整数值,这个表中的第一个名称Mon具有值0,Tues是1,依此类推
       thisWeek = Week::Tues;
       这样thisWeek的值为1
       也可以这样编写下列语句
       enum Week{Mon=1, Tues, Wed, Thurs, Fri, Sta, Sun} thisWeek;
       那么上面的thisWeek的值就为2
    
    2.4 基本的输入/输出操作
       2.4.1 从键盘输入
       2.4.2 到命令行的输出
       2.4.3 格式化输出
       2.4.4 转义序列
       转义序列     作用
       \a           发出蜂鸣声
       \n           换行
       \'           单引号
       \\           反斜杠
       \b           退格
       \t           制表符
       \"           双引号
       \?           问号
    
    2.5 C++中的计算
       2.5.1 赋值语句
       了解lvalue和rvalue
       lvalue是一种涉及内存地址的变量,之所以这样称呼它,是因为所有产生lvalue的表达式都可以出现在赋值语句中等号的左边。大多数变量都lvalue,因为它们指定内存中的一个位置,但是,由于一些变量的值已经被定义为常量,所以它们不是lvaue
    
       2.5.2 算术运算
    	   1 const修饰符
    	   2 常量表达式
    	   3 程序输入
    	   4 计算结果
    	   5 显示结果
       
       2.5.3 计算余数 %
       2.5.4 修改变量
       2.5.5 增量和减量运算符
       2.5.6 计算的顺序
    
    2.6 变量类型和类型强制转换
       2.6.2 赋值语句中的类型强制转换
       int num = 0;
       float decimal = 2.5f;
       number = decimal;
       注意变量2.5f末尾的字母亲f,它告诉编译器这个常量是单精度浮点型,如果没有f,默认的类型将是double,任何包含小数点的常量都是浮点型,如果不希望它成为双精度浮点型,那么就需要附加字母f,大写字母F具有相同的作用
    
       2.6.3 显式类型强制转换
       static_cast<the_type_to_convert_to>(expression)
       dynamic_cast将对转换进行动态检查,也就是说,在执行程序时进行检查
       const_cast用于删除表达式中的const属性
       reinterpret_cast是一种无条件的强制转换
    
       2.6.4 老式的类型强制转换
       (要转换成的类型)表达式
       strips_per_rool = (int)(rolllength/height);
    
       2.6.5 按位运算符
       & 按位与(AND) 
       | 按位或(OR)
       ^ 按位异或(EOR)
       ~取反(NOT)
       >>右移
       <<左移
    
       1 AND运算符
       2 OR运算符
       3 EOR运算符
       4 NOT运算符
       5 移位运算符
       //向左移动n位相当于这个值和2相乖n次,换句话说,相当于以2n,类似地,向右移动n位相当于除以2n
    
    2.7 了解存储时间和作用域
       变量的生存期和作用域是两个不同的概念,重要的是不要混淆两个概念,
       生存期是执行过程中的一个期间,从创建这个变量时开始,到销毁这个变量并且释放共占用的内存空间结束
       变量的作用域是可以在其中访问这个变量的程序代码区域
    
       2.7.2 决定变量声明的位置
       2.7.3 全局变量
       2.7.4 静态变量
       static int count;
       如果在声明一个静态变量时没有给它提供初始值,那么程序将对它进行初始值
       静态变量的默认初始值始终为0
    
    2.8 命名空间
       using namespace std;
       2.8.1 声明命名空间
       namespace myStuff
       {
           //....
       }
       2.8.2 多个命名空间
    
       
    2.9 C++/CLI编程
       C++/CLI功能包括
       在C++/CLI程序中,前面讨论的所有ISO/ANSI基本数据类型都可以使用,但是在某些上下文中,它们具有一些额外的属性
       在控制台程序中,C++/CLI对键盘输入和命令行输出提供了它自己的机制
       C++/CLI引入了safe_cast运算符,确保类型强制转换操作能够了生成可检验的代码
       C++/CLI提供了另外一种基于类的枚举功能,它的灵活性超过了前面所介绍的ISO/ANSIC++enum声明
    
       2.9.1 C++/CLI特有的基本数据类型
       long long            8个字节
       unsigned long long   8个字节
    
       基本类型     大小姐   CLI值类
       bool         1        System::Bollean
       char         1        System::SByte
       signed char  1        System::SByte
       unsigned char 1       System::Byte
       short         2       System::Int16
       unsigned short 2      System::UInt16
       int            4      System::Int32
       unsigned int   4      System::UInt32
       long           4      System::Int32
       unsigned long  4      System::UInt32
       long long      8      System::Int64
       unsigned long long 8  System::UInt64
       float          4      System::Signle
       double         8      System::Double
       long duble     8      System::Double
       wchat_t        2      System::Char
    
       2.9.3 C++/CLI特有的功能--格式化输出
       int packageCount = 25;
       Console::WriteLine(L"There are {0} packages.", packageCount)
    
       格式说明符
       C或c   把值作为货币输出
       D或d   把整数作为十进制值输出,如果指定的精度大于位数,那么将在数字的左边填充0
       E或e   按照科学记数法输出浮点值,即利用指数,精度值表示在小数点后输出的位数
       F或f   把浮点值作为开式为+dddd.dd.....的定点输出
       G或g   以最紧湊的形式输出值,这取决于值的类型和是否指定了精度,如果没有指定精度,那么将使用默认的精度
       N或n   把值作为定点十进制值输出,必要时,将以每3位为一组用逗号分隔开
       X或x   把整数为十六进制值输出,根据是否指定x或x,将输出十六进制数字的大写或小写形式
       
       2.9.4 C++/CLI的键盘输入
       Console::Read() Console::ReadLine();
       Console::ReadKey()
    
       String^ line = Console::ReadLine();
       类型名称String后面的字符^表示这是引用String类型对像的句柄,
    
       char ch = Console::Read();
    
       ConsoleKeyInfo keyPress = Console::ReadKey(true);
       true导致按皱键不在命行上显示
    
    
       2.9.5 使用safe_cast
       safe_cast 等于于static_cast
    
    
       2.9.6 C++/CLI枚举
       C++/CLI程序中的枚举和ISO/ANSI C++程序有很大的不同,首先在C++/CLI中定义一个枚举
       enum class Suit{Clubs, Diamonds, Hearts, Spades}
       Suit suit = Suit::Clubs;
    
       1 指定枚举常量的类型
       short unsigned short
       int unsigned int
       long unsigned long
       long long  unsigned long long
       signed char unsigned char
       char bool
    
       2 指定枚举常量的值
       enum class Face : char{ Ace = 1, Two,Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King};
    
       3 枚举常量运算
    
       4 使用枚举器作为标识位
    
    
    
    
    */
    
    //练习题一:
    /*#include <iostream>
    using std::cout;
    using std::endl;
    int main()
    {
    	int age;
        cout<<"请输入你的年龄:"<<endl;
    	std::cin>>age;
    	cout<<age<<endl;
    	return 0;
    }*/
    
    //练习题二
    /*#include <iostream>
    using std::cout;
    using std::endl;
    int main()
    {
    	int age;
        cout<<"请输入数值:"<<endl;
    	std::cin>>age;    
    	int s = age / 8;	
    	int v = age - (s*8);
    	
    	cout<<"数值"<<age<<"与8的正余数为:"<<v<<endl;
    
    	return 0;
    }*/
    
    //第三题
    /*#include <iostream>
    using std::cout;
    using std::endl;
    int main()
    {
    	int s = (1 + 2) + (3 + 4);
    	cout<<"s:"<<s<<endl;
    
    	s = (16*4) / (2*3);
    	cout<<"s:"<<s<<endl;
    
    	int a=1, b=2, c=3, d = 4, e = 5, f=6;
    	s = (a > b) ? a : ((c> d) ? e : f);//6
    	cout<<"s:"<<s<<endl;
    	return 0;
    }*/
    
    
    //第四题
    /*#include <iostream>
    using std::cout;
    using std::endl;
    
    int GreatestCommonDivisor ( int m, int n )
    {
    	//m1280 n:1028
    	int r;
    	do
    	{
    		r = m % n; // 1280 % 1028 = 252
    		cout<<"r:"<<r<<endl;
    		m = n;  
    		n = r;
    		// m:1028  n:252
    		// m:20    n:252
    	}while ( r != 0 );
    	return m;
    }
    
    
    int main()
    {
    	int width = 1280;
    	int height = 1028;
    	//double aspect = width / height;
    	double aspect = static_cast<double>(width) / height;
    	cout<<"aspect:"<<aspect<<endl;
    
    	//int ans = GreatestCommonDivisor(width,height);
    	//cout<<"ans:"<<ans<<endl;
    
    	return 0;
    }*/
    
    //第五题
    /*#include <iostream>
    using std::cout;
    using std::endl;
    int main()
    {
    	unsigned s = 555;
    	cout<<"sizeof(s):"<<sizeof(s)<<endl;
    
    	int v = (s >> 4); // 34
    	cout<<"v:"<<v<<endl;
    
    	v = (~0<<3); //-8
    	cout<<"(~0<<3):"<<v<<endl;
    
    	//cout<<"~0:"<<~0<<endl;
    	cout<<"~(~0<<3):"<<~(~0<<3)<<endl;
    	int vv= 34 & 7;
    	cout<<"34&7:"<<vv<<endl;
    	
    	//12
    	int i = (s >> 4) & ~(~0<<3);
    	cout<<"i:"<<i<<endl;
    
    	int m = 1; 
    	int n = (m++) + (m++);
    	cout<<"n:"<<n<<endl;
    	return 0;
    }*/
    
    
    /*
    #include <iostream>
    using namespace std;
    int main()
    {
    	char packet[10];
    
    	//cout<<"packet[0]:"<<packet[0]<<endl;
    	*(packet + 1) = '2';
    	for (int i = 0;i<sizeof(packet); ++i)
    	{
    	    //cout<< *(packet + i)<<endl;
    		//cout<<"i:"<<packet[i]<<endl;
    		cout<<"i:"<<*(packet+i)<<endl;
    	}
        return 0;
    }*/
    
    
    //第五题
    /*#include <iostream>
    using std::cout;
    using std::endl;
    int main()
    {
    	unsigned s = 555;
    	cout<<"sizeof(s):"<<sizeof(s)<<endl;
        
    	cout<<"(s>>4):"<<(s>>4)<<endl; //这里是如何转过去,还需要多学习,加强加强
    	//0000 0000 0000 0000 0000 0000 0100 0010
    
    	//cout<<"(~0 << 3):"<<(~0 << 3)<<endl; //这里没弄懂,-0 << 8  这句好像不能理解
    	//~0 是指把所有位都反转过来
    	// 0的32位 0000 0000 0000 0000 0000 0000 0000 0000
    	// 反转后的32位 1111 1111 1111 1111 1111 1111 1111 1111
    	
    	//然后进行<<3位的操作,
    	//右移三位的操作数为:  1111 1111 1111 1111 1111 1111 1111 1000
    
    	//然后进行~操作,也就是反转操作
    	//0000 0000 0000 0000 0000 0000 0000 0111
    
    	//然后将(s>>4)与后面的进行与操作
    	//值1: 0000 0000 0000 0000 0000 0000 0100 0010
    	//值2: 0000 0000 0000 0000 0000 0000 0000 0111
    
    	//值3: 0000 0000 0000 0000 0000 0000 0000 0010
    	return 0;
    }*/
    

      

  • 相关阅读:
    一sqlite分页 语句,
    array调用排序,返回的数组要 重新赋值,
    sublime text3快速编辑选中多行
    sublime text3实现多行快速编辑Ctrl+E或者Tab
    sublime使用Markdown Preview标记语言
    解决sublime package control 出现There are no packages available for installation
    sublime text 3安装html-css-js prettify后使用时报错An unhandled OS error was encountered
    sublime格式化插件---HTML-CSS-JS Prettify美化代码
    node=day5
    封装异步API
  • 原文地址:https://www.cnblogs.com/xiangxiaodong/p/2732766.html
Copyright © 2011-2022 走看看