📄 ex2.cpp
字号:
// 第2章 基本元素、类型和概念
//[例2.1]C++中初始化定义语句char m=f(3);中的表达式是函数调用
#include<stdio.h> // f(3)是int型表达式,隐含地转换赋值给char型局部变量m
int f( int k) {printf("k=%d,",k); return k*k;}//k是定义在堆栈空间的局部变量
void main(void) { char m=f(3); printf("m=%d\n",m);} //输出k=3,m=9
//[例2.2]
#include <stdio.h>
void main() //定义在函数体中的变量a,b是局部变量
{ signed short a=65535;// warning: 'initializing' : truncation from 'const int' to 'short'
unsigned short b=-1; //-1初始化无符号的短整型数b
printf("[%hd,%4hu,%4ho,%x]\n",a,a,a,a);//输出:[-1,65535,177777,ffffffff]
printf("[%hd,%4hu,%4ho,%x]\n",b,b,b,b);//输出:[-1,65535,177777,ffff ]
}
//sizeof(0xffff)= sizeof(-1)=4
//[例2.3]
#include <stdio.h> //定义在函数外全局范围的变量a,b是全局变量
signed short a=65535;// warning: 'initializing' : truncation from 'const int' to 'short'
unsigned short b=-1;//-1的内存状态是唯一的,内存状态的解释或输出是多样的
void main()
{ printf("[%d,%u,%010X]\n",a,a,a); //输出:[-1,4294967295,00FFFFFFFF]
printf("[%d,%u,%012X]\n",b,b,b);//输出:[65535,65535,00000000FFFF]
} //int型数据在32位模式占4个字节
//[例2.4]将转义序列中的一些字符的ASCII值以10进制数和字符方式显示出来:
#include<stdio.h>
void main()
{ char a='\a',b='\b',t='\t',n='\n',v='\v'; //输出结果不含定界符单引号
printf("%d,%d,%d,%d,%d\n",a,b,t,n,v); //输出:7,8,9,10,11
printf("%c,%c,%c\n",'\"','\'','\\'); //输出: ",',\
}
//[例2.5]格式控制输出地址,0065是局部变量h,i段地址,0040是代码段的段地址。
#iinclude<stdio.h>
void main(void) //函数名printf,main表示代码的入口地址
{ short h;int i; //&h,&i表示变量h,i的地址
printf("&h=%p,&i=%p\n",&h,&i); //输出&h=0065FDF4,&i=0065FDF0
printf("printf=%p,main=%p\n",printf,main); //输出printf=004013D0,main=00401005
}
//[例2.6]通过键盘读取字符
#include<stdio.h>
void main(void)
{ char c1,c2; /*定义两个字符变量*/
printf("键入两个字符,以逗号分隔\n");
scanf("%c,%c",&c1,&c2);
printf("c1=%c,c2=%c\n",c1,c2);
}
#include<stdio.h>
void main(void)
{ char c1,c2;
printf("键入两个字符,以分号分隔\n");
scanf("%c;%c",&c1,&c2);
printf("c1=%c,c2=%c",c1,c2);
}
//[例2.7]从键盘输入整型数
#include<stdio.h>
void main(void)
{ short i; int j;long k; printf("键入3个十进制数:");
scanf("%hd,%d,%ld",&i,&j,&k);
printf("显示键入的十进制数:%hd,%d,%ld\n",i,j,k);
}
//[例2.8]输入浮点数
#include<stdio.h>
void main(void)
{ float x,y,z; printf("键入3个float型数:");
scanf("%e,%f,%g",&x,&y,&z);
printf("显示键入的float型数与和:%g,%e,%f,%f\n",x,y,z,x+y);
double u,v,w; printf("键入3个double型数:");
scanf("%le,%Lf,%lG",&u,&v,&w);
printf("显示键入的double数与和:%le,%Lf,%lG,%lf\n",u,v,w,u+v);
}
//[例2.9]静态的和活动的不变量
#include<stdio.h>
int f( const int k) // 冻结f函数的入口形参k在函数体中不得变化
{ const int j=k*k; //活动不变量j仅仅初始化一次,但可以相对变动
printf("k=%d,j=%d\t",k,j); return j;
}
void main(void) //整型常数表达式可以界定数组维数
{ const int n=3; //静态地声明整型常数n,这个n可以界定数组维数,如int a[n];
const int m=f(n); //m视为活动的不变量,这个m不可以界定数组维数
} //运行输出结果为:k=3,j=9
//[例2.0] 引用用变量名初始化,变量用常数初始化
#include <stdio.h>
void f(int&r){r=3;} //引用形参r直接设置实参变量w的值
int y,z ; //定义全局变量y,z, 未明显赋初值,此时y=0,z=0
void main(void)
{ int x(1), &u= x; //定义局部变量x,初始化为1。声明u为x的引用
int& v=y;v=2; //声明局部引用v为全局变量y的别名,v赋值2
int& w=z;f(w); //声明局部引用w为全局变量z的别名,w赋值3
printf("%d,%d,%d\n",u,y,z);
} //输出结果:1,2,3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -