cplus学习

一.

1.#include 将制定文件拷贝到当前文件,当做文本文件解析


2.“”  现在当前目录查找,如果没找到再去系统目录下查找,<>号只去系统目录下查找。


3.#include既可以在文件开头,也可以在函数中任意位置,任意位置都可以包含其他文件


4.main函数可以return也可以不return,如果return,则之后所有代码都不会再执行;

》普通函数必须return,如果不return不会报错,但会有垃圾结果


5.system调用的程序,如果不加start则会等待当前程序执行完成之后再执行后面程序,如果加了start则不等待,异步执行(同时执行);start后不能带路径,如果要带路径必须先进入目录


6.变量存储在内存中,当遇到变量相关的加减操作时,是在寄存器中操作,所以&取地址符只能操作在内存中的数据,例:&10;10是在寄存器中,没有地址一说

7.const的值不能直接修改,可以通过内存间接修改

8.c语言能操作内存,不能操作寄存器

9.低位在低字节,高位在高字节,如果低位在高字节,cpu寻址从低位寻址,在高字节就牺牲了效率,在低字节就能直接找到所要的字节

10.库函数<limits.h>
float的极限库函数为<float.h>——FLT_MAX、FLT_MIN
int 和long int在32位以上的机器是4个字节大小,嵌入式的场合16位机器是2个字节大小,和short相同


int a=INT_MAX;  int b=INT_MIN;
long a1=LONG_MAX long b1=LONG_MIN
printf("%d,%d",a,a1,b,b1);  //2147483647,-2147483647,2147483647,-2147483647;说明long和int极限值相同


unsigned int 极大值大于int,但是不能表示负数


11.int a1=10;  //十进制10
int a2=010; //八进制
int a3=0x10; //十六进制
int a4=0101u; //u无符号整数
int a5=0x102l; //l长整数
int a6=0x103ll; //long long 整数


12.int num=-1;
unsigned int data=4294967295u;
int num1=4294967295u;
unsigned int data1=-1;


printf("%d",num);   //-1
printf("%u",num);   //4294967295
printf("%d",num1);   //-1
printf("%u",num1);    //4294967295
printf("%u",data);    //4294967295
printf("%d",data);    //-1
printf("%u",data1);   //4294967295
printf("%d",data1);   //-1

13.
char ch='a'; //字符,一个字节
wchar_t wch=L'你';   //宽字符,需要在字符前加L,占四个字节


14.字符按照%d打印,就会输出字符相应编号


15.char ch=0;   printf("%d,%c",ch,ch);  分别输出0和空,


16.printf不会自动进行进制转换,printf("%d",12.1);  //结果为325456354(将浮点数转换后的值),printf不会进制转换,如果要转换可以在12.1前面加(int)强转


17.类型转换顺序:char、short->int->unsigned->long->double     float->double

例:10+'a'+1.5-8765.1234*'b'

a.进行10+'a'的运算:将'a'转换成整数97,得到和为107

b.进行107+1.5的运算:将107转换成double,得到和为108.5000000

c.进行8765.1234*'b'的运算:将'b'转换为double型数98.00000,再与8765.1234相乘

d.把之前得到的108.5000000减去8765.1234*'b'的值,就完成了整个表达式的求值


18.大的数据往小的数据转换会发生数据丢失,高位被截断(int to char)


19._itoa(num , str , 2);  //输出进制,第一个参数是要转换的帧整数,第二个参数是转换后输出到的字符串,第三个参数是以多少进制转换。


20.++ --优先级高于+-*/ , i+++2等价于i++ 再+2;


21逗号运算符,每一条语句都执行,从左向右执行到最后,如果是变量赋值就是最后一个数


22.printf("%d",3>2>1);  输出0;编译器先比较3>2;成立得1,然后1跟1比较,相同所以返回0


23.相同常量字符串,可以存储同一个地址


24.运算的优先级:!-> 算术运算符  ->关系运算符 ->&&  -> ||  ->赋值运算符


25

%s%s拼接
%.5%s截取 (从左边截取,如果要从右边截取可以把字符串数组+要截取第几位,这样指针直接指到那位)
10代表宽度
-左边对齐,默认右边对齐
例:printf("%3s,%-6s,%-5.2s,%4.3s,%.4","hello","hello","hello","hello","hello"); 结果为:hello,hello_,he___,_hel_,hell; (_代表空格)



26

%e输出较大数据时用%e,%g自动根据内容选择用%f还是%e


%hd,整数,短整数,16个位的存储 short范围

%d,%ld等价,&u %lu等价


%lld %llu 超长的数据


27.如果想把进制表示位(o,0x)也打印到屏幕,可以加#;例:printf("\n%#x",data);


printf中出了X、E、G可以大写,其他字符不可以大写,X的大小写决定了输出的大小写


28.可以用*控制输出多少位,让小数点位置变动的变化,代码如下,i是变化的
double db=1.1213234554466878954;
for(int i=1;i<100;i++)
{
printf("%.*f",i,db);


}


29.scanf

scanf读取数据如果不想读某个数据,可以在%后面加*

sscanf挖掘数据,逗号(,)不能做字符串的结束符,如果要中断可用for循环把逗号替换成空格

scanf存数据实数float不能指定精度,只能指定位数

int num=scanf("%d",&a);  把scanf赋值给num,scanf的返回值是成功获取到多少数据

scanf("%[^\n]",str);  以回车作为输入结束符
scanf("%[^=]",str);  以等号作为输入结束符
scanf("%[1]",str);  遇到第一个不是1的字符结束,只接受1
scanf("%[A-Z]",str);  遇到第一个不是A-Z的字符结束,只接受大写字母A-Z
scanf("%[1]",str);  遇到第一个是A-Z的字符结束,只接受不是A-Z的字符
scanf("%[a-zA-Z]",str);  遇到第一个不是字母的字符结束,只接受字母


30.&取地址,位运算,++--等操作都在寄存器,而不是在内存


31.宽字符

MessageBox:和编译器设置有关,当编译器设置为多字节就为宅字符,unicode为宽字符


MessageBoxA:A代表调用多字节,宅字符,宅字符结尾只有一个\0,占用一个字节

MessageBoxW:W代表宽字符,结尾有两个\0,占用两个字节,使用时需加上L:MessageBoxW(0,L"你好世界",L"你好世界",0);

TEXT可以兼容自动调整,自动匹配宽窄字符,例:MessageBoxW(0,TEXT"你好世界",TEXT"你好世界",0);

示例:

#include <stdio.h>
#include <locale.h>//如果有中文字符必须引进该头文件,然后设置中文

void main() {

	setlocale(LC_ALL, "ZH-CN");//设置本地化,中文
	wchar_t wstr[10] = L"1234吴志刚";//定义宽字符前面加w
	wprintf(L"%ls", wstr); //宽字符用wprintf输出,L,l处理宽字符

	system("pause");
}

不能用printf输出宽字符,也不能用wprintf输出宅字符

宽字符putwchar输出到屏幕


32.布尔类型

需要引入头文件<stdbool.h>


_Bool bl=true;  //一个字节大小




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值