51单片机中C语言int能转换为unsigned char 指针类型吗?怎么转换? 51单片机unsigned char 与unsigned l...

\u5173\u4e8e51\u5355\u7247\u673a\u7c7b\u578b\u8f6c\u6362\u7684\uff0c\u7528keil\u7f16\u7a0b\uff0c\u8c8c\u4f3c\u4e0d\u80fd\u628a unsigned char \u7c7b\u578b\u7684\u503c\u7ed9 unsigned int

\u6ca1\u5173\u7cfb\uff0c\u5728\u5f88\u591a\u60c5\u51b5\u4e0b\uff0c\u7f16\u8bd1\u8b66\u544a\u5e76\u4e0d\u5f71\u54cd\u7a0b\u5e8f\u7684\u8fd0\u884c\u300251\u4e2d\uff0c\u5c06\u4e00\u4e2a\u5b57\u8282\u7684unsigned char \u53d8\u91cf\uff0c\u8d4b\u503c\u7ed92\u4e2a\u5b57\u8282\u7684unsigned int\uff0c\u7f16\u8bd1\u63d0\u793a\u201cwarning"\u662f\u6b63\u5e38\u7684\uff0c\u4f46\u5982\u679c\u5c06\u5c0f\u6570\u53d8\u91cf\u8d4b\u503c\u7ed9\u6574\u6570\u3001\u6216\u5c06int\u8d4b\u503c\u7ed9char\u7684\u8b66\u544a\uff0c\u5c31\u5f97\u9002\u5f53\u5173\u6ce8\u4e00\u4e0b\uff0c\u56e0\u4e3a\u6b64\u65f6\uff0c\u6709\u4e22\u5931\u7cbe\u5ea6\u7684\u98ce\u9669\u3002\u66f4\u591a\u4ea4\u6d41\uff0c\u8bf7\u8bbf\u95ee\u6211\u7a7a\u95f4\u3002

unsigned char \u5360\u7528\u4e00\u4e2a\u5b57\u8282\uff0cunsigned long\u5360\u75284\u4e2a\u5b57\u8282\uff0cunsigned char\u8f6cunsigned long\u6ca1\u6709\u95ee\u9898\uff0c\u4f46unsigned long\u8f6cunsigned char\u5f53\u503c\u8d85\u8fc7255\u540e\u5c31\u4f1a\u51fa\u95ee\u9898\u54e6\u3002
\u8bf7\u5148\u5f04\u6e05\u695a char ,short,long\u7684\u5927\u5c0f\u518d\u63d0\u95ee\u54e6

1、可以转换,强制转换就行。例如:
int a=100;
unsigned char * c = (unsigned char *)a;
2、强制类型转换
当操作数的类型不同,而且不属于基本数据类型时,经常需要强制类型转换,将操作数转化为所需要的类型。强制类型转换具有两种形式,称为显式强制转换和隐式强制类型转换。
显式强制类型转换
显式强制类型转换需要使用强制类型转换运算符,格式如下:
type(<expression>)

(type)<expression>
其中,type为类型描述符,如int,float等。<expression>为表达式。经强制类型转换运算符运算后,返回一个具有type类型的数值,这种强制类型转换操作并不改变操作数本身,运算后操作数本身未改变,例如:
int nVar=0xab65;
char cChar=char (nVar);
上述强制类型转换的结果是将整型值0xab65的高端两个字节删掉,将低端两个字节的内容作为char型数值赋值给变量cChar,而经过类型转换后nVar的值并未改变。

可以呀,将高位和地位分别赋值给两个char变量就可以了。例如:
int x;
unsigned char al,ah;
al=x%256;
ah=x/256;

可以,就是拿这个int当成指向unsigned char的指针地址,举例如下:
int x;
unsigned char c;
c=*((unsigned char *)x); //读取x地址指向的字符

要看什么样的单片机。如果要转换的话,可以如下:
int a=0x5bce;
unsigned char *p;
p = (unsigned char *)a;

要看你的ram和rom是多大的,有些是单个字节,那转换完,可能会丢掉高位的。就是说0x5b会不见了,只剩下个0xce;注意点使用。
希望我的回答对你有帮助,有什么问题欢迎一起探讨。

可以,直接使用就好了。
unsigned char a;
int addr;
a=(unsigned char *)addr;

  • 51/52鍗曠墖鏈 keil C璇█ 瀛楃杞暟瀛
    绛旓細a = *(++s);int number4 = a - '0';//杩欐椂number4涓瓨鐨勫氨鏄暟瀛0 杩欎釜鏃跺欏啀鎶婂洓涓暟瀛楋紝瀛樺埌浣犵殑L鍜孯涓細int L = number0*10+number2;int R = number3*10+number4;绗簩绉嶆儏鍐碉紝濡傛灉浠庝覆鍙e彇鍒扮殑瀛楃閮芥槸瀛樺湪涓涓暟缁勪腑锛屾瘮濡傦細char a[10];杩欐牱浣犲氨鐢ㄦ暟缁勭殑鏍囧彿鍙栧氨鍙互浜嗐
  • 51鍗曠墖鏈,鏈変簡c璇█鐨绋嬪簭,濡備綍鎶婂畠鍙樻崲鎴愭眹缂栬瑷
    绛旓細鍙互瀹炵幇锛屼絾杞崲鐨缁撴灉涓嶆槸澶悊鎯筹紝璺熷弽姹囩紪宸笉澶氾紝闇瑕佽嚜宸卞幓鏁寸悊锛屽叾杞Щ鐨勬爣鍙烽渶瑕佽嚜宸遍噸鏂板畾涔夛紝杞崲缁撴灉閲屾槸鐢ㄨ鍦板潃鏇夸唬鐨
  • 51鍗曠墖鏈篶璇█绋嬪簭
    绛旓細绛旓細妤间富鍏堟悶娓C51涓瀹氫箟鏁版嵁鐨勭被鍨嬨俢har鍨 8浣嶏紙-127鍒128锛夛紱int鍨16浣-32727鍒+32728锛堜袱涓瓧鑺傦級unsigned char鏄8浣嶄絾浠0鍒255锛寀nsignde int 16浣嶄粠0鍒65535锛涙ゼ涓荤▼搴忎腑鐨凾H0/TL0鏄8浣島char鍨嬶紱tmp鏄16浣島int鍨嬨倀mp=TL0|(TH0<<8);杩欏彞鍦ㄦ墽琛屾椂鍏堣繘琛岀被鍨杞崲锛屾妸TL0/TH0鏆傛椂杞崲鎴...
  • 51鍗曠墖鏈篊璇█缂栫▼
    绛旓細// 51鍗曠墖鏈篊璇█缂栫▼,杩欎釜鏃堕挓+绉掕〃鍙互鍙傝冧竴涓嬨俰nclude<reg51.h> define uchar unsigned char define uint unsigned int sbit qingling=P1^0; //娓呴浂 sbit tiaofen=P1^1; //璋冨垎 sbit tiaoshi=P1^2; //璋冩椂 sbit sounder=P1^7; //naozhong uint a,b;uchar hour,minu,sec, ...
  • 51鍗曠墖鏈轰腑濡備綍鐢c璇█鎺у埗鐩存祦鐢垫満姝e弽杞
    绛旓細include"reg52.h"include"intrins.h"define unint unsigned int define unchar unsigned char define PLAY_OUT P1 unchar sec=0;unchar min=0;unchar count=0;bit gj=0; //鍏夊拰閬ユ帶鐨勫垏鎹 unchar r6,r7;bit time0=1;bit time1=1;sbit PLAY_Q_Q=P3^0;sbit PLAY_Z=P3^1;sbit PLA...
  • 51鍗曠墖鏈缂栫▼,鐢C璇█銆
    绛旓細缁欎綘涓涓煩闃甸敭鐩樼殑鍙傝冪▼搴 琛屽垪鎵弿锛氶氳繃楂樺洓浣嶅叏閮ㄨ緭鍑轰綆鐢靛钩锛屼綆鍥涗綅杈撳嚭楂樼數骞炽傚綋鎺ユ敹鍒扮殑鏁版嵁锛屼綆鍥涗綅涓嶅叏涓洪珮鐢靛钩鏃讹紝璇存槑鏈夋寜閿寜涓嬶紝鐒跺悗閫氳繃鎺ユ敹鐨勬暟鎹硷紝鍒ゆ柇鏄摢涓鍒楁湁鎸夐敭鎸変笅锛岀劧鍚庡啀鍙嶈繃鏉ワ紝楂樺洓浣嶈緭鍑洪珮鐢靛钩锛屼綆鍥涗綅杈撳嚭浣庣數骞筹紝鐒跺悗鏍规嵁鎺ユ敹鍒扮殑楂樺洓浣嶇殑鍊煎垽鏂槸閭d竴琛屾湁鎸夐敭鎸変笅...
  • 51鍗曠墖鏈篊璇█缂栫▼妯℃澘
    绛旓細```html```cPWM_init();PWM0_set(0x10);while(1);```浠ヤ笂浠g爜鎻愪緵浜嗗熀纭鐨51鍗曠墖鏈篊璇█缂栫▼妯℃澘锛屾兜鐩栦簡涓诲嚱鏁般佸熀鏈惊鐜佷腑鏂鐞嗐佸畾鏃惰鏁板櫒銆佷覆鍙i氫俊鍜孭WM鎺у埗鐨勬鏋躲傞氳繃杩欎簺妯℃澘锛屽紑鍙戣呭彲浠ュ揩閫熸瀯寤哄嚭鍔熻兘瀹屽杽鐨勭▼搴忥紝鏍规嵁鍏蜂綋闇姹傝皟鏁村嚱鏁板弬鏁板拰瀹炵幇缁嗚妭銆傝纭繚鍦ㄤ娇鐢ㄥ墠瀵圭‖浠跺拰鐩稿叧SFR...
  • 51鍗曠墖鏈鸿兘杩愮畻闀挎暣鍨嬫暟鎹悧?鏁堢巼鎬庝箞鏍
    绛旓細鑳斤紝鍦C璇█缂栫▼鐨勬椂鍊欑洿鎺ュ畾涔塴ong int绫诲瀷鐨勫彉閲忓氨鍙互浜嗭紝缂栫▼涓婃病鏈夊お澶х殑鍖哄埆銆
  • 51鍗曠墖鏈 鎸夐敭鎺INT0,浣跨敤鏂规硶
    绛旓細include<reg51.h> define uchar unsigned char sbit LED1=P1^0;sbit LED2=P1^1;sbit LED3=P1^2;uchar kdn=0,cnt=0;void ext0() interrupt 0 { kdn++;TR0=1;} void t0isr() interrupt 1 { TH0=(65536-50000)/256;TL0=(65536-50000)%256;cnt++;if(cnt>20){ TR0=0;if(kdn==...
  • 51鍗曠墖鏈篶璇█濡備綍鎶婃诞鐐瑰瀷杞负瀛楃涓 ?
    绛旓細浣跨敤stdio.h涓殑sprintf鍑芥暟杞寲鍗冲彲锛歩nclude <stdio.h>float a = 1.234;char str[10];sprintf(str, "%f", a);
  • 扩展阅读:不开csm就识别不了硬盘 ... 单片机into接口 ... 宏晶stc单片机官网 ... 51单片机按键控制程序 ... csm开启还是关闭好 ... 51单片机的编程方法 ... \t在c语言中怎么用 ... cpp为什么默认不支持int ... int函数的使用格式 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网