您的位置:首页 > 其它

cplus学习

2016-05-21 21:18 281 查看
一.

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; //一个字节大小
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: