#1:C语言复习:基本数据类型;

   为数据结构打基础,跨专业学习:

一、数据类型:

     

例一:

         整型变量的数据溢出:

#include<stdio.h>
int main()
{
	short a,b;
	a = 32767;
	b = 1;
	printf(" %d   %d   %d\n",a,b, a+b);
	printf(" %d   %d   %d\n",a,b, (short)(a+b));
	
	return 0;
}


      注意各种变量在内存中的位数,以免计算的时候出现数据溢出!

      short,long,int ,unsigned int,

      float,double,

      char,string

      a[  ], struct

        


例二:

实型变量的舍入误差:

#include<stdio.h>

int main()
{
	double a,b;
	a = 1234567.42e4;
	b = a + 20.0;
	printf(" %f\n %f\n\n\n",a,b);
	
	printf(" %f\n %f\n",(float)a,(float)b);
	 
	return 0;
}

#include<stdio.h>
void main()
{
	float a,b;
	a=123456.72e5;							//a的值很大
	b=a+20;									//与a相比,20很小
	printf("%f \n %f\n",a,b);

一个大数在加一个很小的数的时候,有可能发生忽略的情况,所以要避免两个相差很大的数直接相加!   


例三:

转义字符

#include<stdio.h>
void main()
{
	//printf("a\n");				//   \n   换行
	//printf("a\t");				//   \t   相当于Tab
	//prinft("a\b");				//   \b   退格
	//printf("a\r");				//   \r   回车
	//printf("a\\");				//   \\   反斜杠
	//printf("a\'");				//   \'   单引号
	//printf("a\"");				//   \"	  双引号\
	//printf("a\a");				//   \a   鸣铃
	//printf("\001");				//   \ddd 1~3位八进制代表的字符 ASCII 
	//printf("\x01");				//   \xhh 1~2位十六进制数代表字符
	//printf("a\a\bc\0415074\x74y\\q\rwe\"\n");
}

例四:

字符变量

#include<stdio.h>
 
int main()
{
	char a=0x0061,b;			// a = 0x1261  - - - - a = 0x0061; 只取后两位; 
	int c = 0x1261,d;
	b=a-96;
	d=c-96;
	printf("%c,%c\n%d,%d\n%d,%d\n",a,b,a,b,c,d);
	
	return 0;
}


     字符变量只占八位二进制,在赋值的时候,只取后面的八位,前面的自动忽略;


例五:

自增自减

#include<stdio.h>
void main()
{
	int i=5,x;
	x=i++;
	printf("i=%d,x=%d\n",i,x);
	printf("%d\n",++i);
	printf("%d\n",--i);
	printf("%d\n",i--);
	printf("%d\n",-i++);
	printf("%d\n",-i--);
}


     记着正常用法即可;


例六:

逗号运算符

#include <stdio.h>
int main()
{
	int a,x;
	x=(a=3,6*3);
	printf("a=%d,x=%d\n",a,x);
	x=a=3,6*a;
	printf("a=%d,x=%d\n",a,x);
	x=(a = 3, a+5 , a*3);
	printf("a=%d,x=%d\n",a,x);
	
	return 0;
}

  
     出现逗号运算符的时候,一般只取最后一个表达式即可,

     需要注意的是,前面的赋值语句一样起作用!

如:

   x=(a=3,6*3);    

   此时a的值为3

例七:

复制转换高位丢失

#include <stdio.h>
void main()
{
	short a=289;
	char c;			
	long b=98304;	
	c=a;			//截取a的低八位给c
	a=b;			//截取b的低十六位给a
	printf("a=%d\t c=%d\n",a,c);
}

   
    赋值的时候,如果大数据赋值给小数据,可能发生高位数据丢失的情况;

例八:

强制转不会改变定义的类型

#include <stdio.h>
void main()
{
	float f=5.75;
	printf("(int)f=%d,f=%f\n",(int)f,f);
}
   

    强制类型转换仅仅在输出时变化,本身数据不发生变化;

    格式:( int )( 表达式 ) ……


例九:

计算类型长度运算符

#include <stdio.h>
void main()
{
	int a;
	float b;
	printf("char:%d byte\n",sizeof(char));
	printf("int:%d byte\n",sizeof(int));
	printf("a:%d byte\n",sizeof(a));
	printf("b:%d byte\n",sizeof(b+1.2));
}
   

    通过计算机计算各类型的长度,不必特意去记,   

    格式:sizeof( 变量名 );


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值