define和unsigned int在单片机中都是定义的意思,在应用中怎么区分,谢谢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了define和unsigned int在单片机中都是定义的意思,在应用中怎么区分,谢谢相关的知识,希望对你有一定的参考价值。

define 只是定义一个名称,比如你叫小亮,那么:
#define NAME 小亮
以后代码中,凡是出现‘NAME’的地方,都会被替换成 ‘小亮’。

在编译上看,#define只是告诉编译器 ‘一个名称替换’, 编译器不会为其分配内存空间,即使你定义了一个#define,然后在代码中没有使用,编译器也不会给出任何警告。

相反,unsigned int是一个变量定义,编译器会为其分配内存,如果你定义了一个变量,但程序中没有使用,编译器也会为其分配内存,同时给出警告。

在单片机中,因为内存资源非常有限,如果能用#define定义一些端口,地址之类的常量,一定要用#define.追问

能举例说下unsigned int吗,整型变量和费整型变量怎么区分,多谢

追答

unsigned 表示没有符号,无法表示负数,但相同位长下,unsigned int 比int 表示的正数范围要大,注意,是正数。 如果程序需要处理负数,就要写int。

整形就是 unsigned int 或者int。
非整形包括 char ,short, float, double, 指针,结构体,枚举。

参考技术A 1) #define 是宏定义。
可以理解为就是给变量取个别名,这个别名在整个工程都可以用;

2)unsigned int 是类型定义,无符号整型。
是给变量定义具体的类型,而且有使用的范围,在哪个函数里定义,就只能在这个函数里使用。
参考技术B define和unsigned int,不是单片机中的东西。

它们是 C 语言中的。

楼主想要仔细的深入的研究,就应该去看专门介绍 C 语言的书。

在单片机领域,不会仔细讨论这些。

只是拿来就用,不讲道理。追问

但单片机变成需要呀

追答

需要,你就用呗。

想要弄明白,就应该去看专门介绍 C 语言的书。

参考技术C define是宏定义追问

宏定义什么意思,具体点
unsigned int还有

追答计算机中宏又称为宏命令,即通过特殊的控制语,将一系列动作简便化;即:一种批处理的程序,宏定义是一个类的在哪个函数里都使用的定义        请看例子一C语言为例:#include<stdio.h>
#define A 100
int main()
int PA(int);\\\\PA函数声明
int a=1,b; \\\\局部变量小a和b
printf("\\d",PA);        \\\\用于第二函数
a+A=b;      \\\\b等于a加大A,A已在main函数外定义过了是宏定义在函数里不用再定义了
printf("%d",b);\\\\输出b值
return 0;

int PA(int c);

int z=0,c;
c=A+z;        \\\\不需要在定义A了
return(c);

unsigned int是无符号整型的值在0~65535,int(整数值)是-32768~32767。无符号是说   100前没有符号是正数值unsigned int 只能为正数

(C)理解 #define write(b,addr) (void)((*(volatile unsigned int *) (addr)) = (b))

1. 理解

嵌入式系统编程,要求程序员能够利用C语言访问固定的内存地址。
既然是个地址,那么按照C语言的语法规则,这个表示地址的量应该是指针类型。

所以,知道要访问的内存地址后,比如0x57000040(这儿的addr就是内存地址0x57000040)
第一步是要把它强制转换为指针类型

unsigned int*)(0x57000040);

所以0x57000040强制转换为指向unsigned int类型。

volatile(可变的)这个关键字说明这变量可能会被意想不到地改变,这样编译器就不会去假设这个变量的值了。
简单的说使用volatile的目的就是: 让对volatile 变量的存取不能缓存到寄存器,每次使用时需要重新存取。

第二步,对指针变量解引用,就能操作指针所指向的地址的内容了

   *(volatile unsigned int*)(0x57000040)

小心地把#define宏中的参数用括号括起来,这是一个很好的习惯。
所以,write(b,addr) 的作用就是把值b写入addr所指的内存地址单元。

以上是关于define和unsigned int在单片机中都是定义的意思,在应用中怎么区分,谢谢的主要内容,如果未能解决你的问题,请参考以下文章

unsigned char 与 char 有啥却别?何时适用

单片机中unsigned char 和unsigned int的区别

单片机中编程为甚么很多都用 unsigned int ,和int有啥区别?

8位单片机中unsigned int的长度是多少?

#include <reg52.h> #define uchar unsigned char //宏定义 #define uint unsigned int void de

unsigned int k在单片机中的意思?