当前位置: 代码迷 >> 单片机 >> 单片机简单编程的小疑点
  详细解决方案

单片机简单编程的小疑点

热度:54   发布时间:2016-04-28 15:53:10.0
单片机简单编程的小问题
#include<reg52.h>
#define uint unsigned int 
#define uchar unsigned char 
sbit D1=P1^0;
void delay(uint);
void main()
{
while(1)
{
D1=0;
delay(100);
D1=1;
delay(100);
}
}
/*
void delay()
{
uint x,y;
for(x=100;x>0;x--)
for(y=600;y>0;y--);
}*/
void delay(uint z)
{
uint x;
uchar y;
for(x=z;x>0;x--)
for(y=20;y>0;y--);
}
这是单片机编程中的一个很简单程序,想请教一下红色区域的y是uchar型,为什么可以相当于整数值一样递减?


------解决方案--------------------
就是8位的无符号数字 最多可表示256
有符号就是-128到127
仅此而已
------解决方案--------------------
其实最初的C教科书中将char翻译成字符型数据是不对的
------解决方案--------------------
char 型和 int型是可以通用的,unchar范围0-255,就这样
------解决方案--------------------
仅仅是取值范围上面的差异。

-128-127 
0 - 255

------解决方案--------------------
字符是以ASCI码形式存储的 一个字符对应一个ASCI码 即一个数字 
uchar虽然称为字符型数据 其实还是整数 8位无符号整数
但是如果在printf函数中 以%d格式输出就是整数 以%c输出就是字符
编程的时候完全可以把它视为整数数据类型
------解决方案--------------------
就是8位的无符号数字 最多可表示256
有符号就是-128到127
仅此而已
------解决方案--------------------
C provides two unusual operators for incrementing and decrementing variables. The increment operator ++ adds 1 to its operand, while the decrement operator -- subtracts 1.

理论上,只要是变量,就可以使用
  相关解决方案