C语言第三章

来源:互联网 发布:大数据 潜在顾客 编辑:程序博客网 时间:2024/05/16 15:30
计算机对数字的储存用二进制形式,对于人的使用二进制却非常不方便。
所以C语言中没有二进制表达式,C语言中最主要的两种常数表达式是:10进制和16进制(0x开头)表达式。

十六进制可以看作是对二进制的提炼,因为4位二进制刚好是一个16进制(2的4次方)


1、常量的种类:
a)整数常量(字符常量):单个字符
b)浮点数常量;
c)字符串常量:双引号包含的文字就是字符串常量,是在内存中连续多个字符常量的内存地址。


2、变量类型:
a)整数变量:char short long(int) __int64
b)浮点数:float double
c)指针变量:带个*符号。例如:char*,
d)自定义变量类型:例如:结构体对象


3、字节的概念
1位只能表达0和1 
2个位只能表达:0,1,2,3   
3个位只能表达:0,1,2,3,4,5,6,7 
4个位只能表达:0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
5个位只能表达:0到31
6个位只能表达:0到63
7个位只能表达:0到127
8个位只能表达:0到255


4、单字节变量:
a)unsigned char类型:范围:从0到255
b)char类型:0-127与unsigned char没有区别,128以后是负数(-128..-1)
c)char类型:从-128到-1 0到127


5、双字节变量:
a)unsigned short类型:范围:从0到64K
b)short类型:0-32K-1与unsigned short没有区别,32K以后是负数(-??????..-1)
c)short类型:从-32K到-1 0到32K



5、双字节变量:
a)unsigned short类型:范围:从0到64K
b)short类型:0-32K-1与unsigned short没有区别,32K以后是负数(-??????..-1)
c)short类型:从-32K到-1 0到32K



6、四字节变量:
a)unsigned long类型:范围:从0到4G
b)long类型:0-2G与unsigned long没有区别,2G以后是负数(-??????..-1)
c)long类型:从-2G到-1 0到2G



代码区:

Test01:

#include "stdafx.h"
#include <stdio.h>
/*
double d1 = 321.1234567890f;
double d2 = 123.1234567890;
char *p = "a";
printf("Hello c world\n!");
*/
int main(int argc, char* argv[])
{

unsigned char c = 0;//10 0xA '\n'
char c1 = 0;
c=c1=100;


c=c1= 127;


c1=c=130;
c1=c=0x9A;


c1=c= 0xFF;


int i = 0;
c1 = 0;
while(i<512)
{
printf("%d ",c1);
++c1;
++i;
}
printf("\n");
return 0;
}


Test02: 十进制转为二进制输出

#include "stdafx.h"
#include <stdio.h>//Standard IO(Input/Output)
#include <math.h>
/*
printf("%d",c/2/2/2/2/2/2/2%2);
printf("%d",c/2/2/2/2/2/2%2);
printf("%d",c/2/2/2/2/2%2);
printf("%d",c/2/2/2/2%2);
printf("%d",c/2/2/2%2);
printf("%d",c/2/2%2);
printf("%d",c/2%2);
printf("%d",c%2);


*/
int main(int argc, char* argv[])
{
printf("请输入一个十进制的数字");
unsigned char c ;//0-255  //char -128 - 0  +127
scanf("%d",&c);
int i = 7;
while(i>=0)
{
int n = pow(2,i);
printf("%d",c/n%2);
--i;
}


printf("\n");
return 0;
}
/*
printf("%d",c/2/2/2/2/2/2/2%2);
int i = 0;
while(i<8)
{
printf("%d",c%2);
c/=2; // c =  c/2;
++i;
}

*/


Test03: 十进制转为十六进制

#include "stdafx.h"
#include <stdio.h>

int main(int argc, char* argv[])
{
printf("请输入一个十进制的数字");
unsigned char c ;//0-255  //char -128 - 0  +127
scanf("%d",&c);
// printf("%d的十六进制是:0x%x\n",c,c);
printf("0x");
switch(c/16%16) //0-15
{
case 10:
printf("A");
break;
case 11:
printf("B");
break;
case 12:
printf("C");
break;
case 13:
printf("D");
break;
case 14:
printf("E");
break;
case 15:
printf("F");
break;
default:
printf("%d",c/16%16);
}


switch(c%16) //0-15
{
case 10:
printf("A");
break;
case 11:
printf("B");
break;
case 12:
printf("C");
break;
case 13:
printf("D");
break;
case 14:
printf("E");
break;
case 15:
printf("F");
break;
default:
printf("%d\n",c%16);
}
printf("\n");
return 0;
}



0 0
原创粉丝点击