c语言基础知识

2018-06-18 03:51:20来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

变量:

 变量相当于存储各种数据类型的容器,它的数据类型处决于接收的是什么样的数据

 计算机读取各种数据类型的方式是不一样的,所以定义数据类型的数据和变量得是相互对应的

 

进制:

l  碾(nian)除法:十进制转为几进制则除几,从下往上看余数   (十进制转二进制,十进制转八进制,十进制转十六进制)

l  几进制转化为十进制:直接乘以几的次方数;

binary:二进制;Octonary:八进制;Hexadecimal:十六进制;

 

原码,反码,补码:【数据存储形式】:(计算机存储的时候存的是补码)

-1:原码:10000001

       反码:11111110

       补码:11111111

负数求补码时,符号位不参与运算

l  正数:原码反码补码相同;

l  负数:补码=原码取反加一,符号位不参与运算

(当负数只有最高位为1时,如:1000 0000       则符号位也为数据位,当负数不止最高位为1,别的位上也有1时,符号位只为符号位,  不参与运算)

short  a=-17;

  -17: 原码:10000000 00010001

            反码:11111111 11101110

            补码:11111111 11101111  //0xffef;

l  计算机存储的数据,存的是补码形式,当输出时是将存的补码转化为原码读取输出的。

{

  short a=-32768;

  short b=a+1;

  printf(“%d”,b);

  将-32768转化为补码形式;将补码进行运算,再将结果转化为原码输出给b;

}

 

‘\0’与0的区别:

         ‘\0’:  是转义字符,也就是空字符,不能显示出来,在ASCII中对应的数值为0,

      在定义char类型的时候,’\0’与0是一样的;如:char a=’\0’;char a=0;两者相同,占一个字节

              当在分别定义的时候如:int i=0; char j=’\0’;这两者是不一样的,前面占4个字节,后面占1个字节

  字符‘0’:代表的ASCII码中对应的数值是48;

 

程序:

getchar();//请求终端获取一个字符,常用于让控制台停留,与system(“pause”);用法相同

sizeof(a)//计算a在内存中所占字节数;

l  整型int在内存中占几个字节?正确答案:sizeof(int)个字节;

l  查看内存的方式:设置断点,运行断点,获取地址。点击调试-》窗口-》内存 查看内存后,再设置断点到下一行,f11逐行运行,看数据在内存中的变化。

%:取余只能是整数取余,余数不能为0;a%b取余结果符号看a的符号;

a/b;除数b不能为0;

 

位,字节,和字:

l  位:bit;

l  字节:byte; 1byte=8bit;

l  字:两个字节;

 

l  Uint: 它对应于32位无符号整数(unsigned int)

l  Static:定义静态变量或函数;修饰的变量数据并不会因为函数的退出而释放空间

l  size_t:是用来定义无符号整型的;32位系统中size_t是4字节的,而在64位系统中,size_t是8字节的,这样利用该类型可以增强程序的可移植性,sizeof()操作符运行的结果就是size_t类型的

 

l  Float的类型最多只能表示7位有效数值,默认保留6位小数;

l   浮点数允许的误差表达式:

         abs(x-y)<1e5;

  判断两个浮点数是否相等:

  If(abs(x-y)<1e5)

       浮点数用  %m.n   格式打印时遵循四舍五入原则

 

打印格式控制符:

%hd(short整型);%d(整型);%p(打印地址);%u(无符号整型);%ho(以八进制格式打印short类型整数);%lo(以八进制格式打印long类型整数);%lu(打印unsigned long类型整数);%ld(打印long类型整数);

   %llu(打印unsigned long long类型整数); %lld(打印long long类型整数);

%m.n  (m:字符总宽度(包括小数点);n:小数点后n位,截取会四舍五入;)

%g:科学计数法和浮点表示法智能选择一个方法输出;

%p:用于打印地址的格式控制符;printf(“%p”,&a);

%0:自动补0;若空位在低位,则不补0,若空位在高位,则补0;(只有右对齐,并且有空位时才补0;左对齐不用补,不然就改变了原本的值)

 

转义字符:

\v: vertical  垂直

\r:将当前位子移到开头    printf(“11111\r22”);结果:22111

 

char 类型

l  char 类型实际存储的是整数而不是字符,因为每个字符都对应一个ASCII码中相应的整数(ASCII码:用特定的整数表示特定的字符,如:A ---> 65; ASCII码取值范围:0—127)

Char类型可以进行加减乘除的运算。

 

类型发生隐式转换情况:

1)赋值时;

2)不同数据类型参与运算时(低字节向高字节转换)(两个类型占字节数相同时long long转向double(小数精度高于整数));

3)传参数的时候;

4)赋值操作时,等号左边会转化为等号右边的类型(精度会缺失);

 

 强制转换:int (x+y);       (int)x;        (int)(x);  强制转换不会自动四舍五入

 

优先级:

  同一优先级的运算符,运算次序由结合方向所决定。

  简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符

 

 If条件判断:

(1)无论多少条if….else….语句,都只算一个判断语句

(2)Switch(i)选择判断  case 里面可以包含多条语句;

(3)赋值表达式的值就是等号右边的值;

 

循环语句:

        break;

        continue;  跳过本次循环

         return;    返回函数,函数执行结束

         goto; 配合标号使用

 

时间种子:

void typing_speed()

{

         int i,j;

         srand(time(NULL));

         //时间种子,如果不预先定义一个时间种子,当程序第二次执行typing_speed()函数时,rand()随机出来的数据和之前调用函数随机出来的数据一样;使用srand(time(NULL))之后,随机出的数据则不同了

         char arr[100] = "dgshdgawsfj e;wloitrfbdjmhfjcdxagfasGWyhetwhfrdskajgfoiueraiwehfkdsh";

         for (i = 0; i < strlen(arr); i++)

         {

                   j =500 + rand() % 1000;

                   setTimeout(j);

                   printf("%c", arr[i]);

         }

}

 

随机数:

    rand()%(n-m+1)+m

    其原理为,对于任意数, 0<=rand()%(n-m+1)<=n-m 于是 0+m<=rand()%(n-m+1)+m<=n-m+m 即 m<=rand()%(n-m+1)+m<=n

 

自增自减:

 {

  int a=3,b=2;

  a=++a - --b;  //结果为a=3,b=1;    ++a在此次运算中,先实现了a+1的操作,a先等于了4,然后执行--b的操作,再运算a= ++a - --b的赋值操作

  a=a++ - b--;  //结果为a=2,b=1;    a++在此次运算中,先实现了a的操作,然后执行--b的操作,再运算a= a++ - --b的赋值操作,再将a的值进行加1的操作

}

负号(-)与自减运算符的优先级是一样的,结合数据的方式是从右向左结合,比如:

  b = -a-- - b++ - c++ - d++;   //相当于b = -(a--) - b++ - c++ - d++;右向左结合

  5++   ++(a++)   ( x+y)++   //几种写法错误a++是一个表达式,不能自增(浮点数可以自增自减)

 

左移右移:

l  左移几位就是乘2的几次方;右移几位就是除2的几次方;

{int a=10;a<<2;printf(%d,a);}   结果:1010<<2à101000->40;(int 四个字节;有32位,所以左边没有溢出,还有很多个位)

 

计算整型数组的长度:

        sizeof(arr)/sizeof(int);

宏定义:

  #define  A(x)  x*x

  a=A(10);     a=10*10=100;

  b=A(5+5);      b=5+5*5+5=35;  纯粹替换,不能加括号

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:C语言 统计一串字符中空格键、Tab键、回车键、字母、数字及其他

下一篇:C语言 统计一篇英文短文中单词的个数