C语言的小小问题,大家都进来看看
发布网友
发布时间:2022-05-18 11:15
我来回答
共3个回答
热心网友
时间:2023-10-15 13:26
1.至于宏定义为什么喜欢定义成 0xf 什么的,还有经常看到定义成0x00000001 这种形式的。
首先计算机运算全是通过2进制进行的,所以把16进制(0x 代表这个数是16进制的)转换成2进制,那么f 就是 1111
0xfff1 2进制表现就是 1111 1111 1111 0001
c语言基础教程书上都有这么一课,就是位运算,"|","&", 等等操作符。当表现一个对象有几种属性时候,它可以并列拥有几种属性,比如一件衣服,他可以是蓝色(定义蓝色为 0001 即0x1),红色(定义红色为0010,即0x2),
黑色(定义为0100,即0x4),白色(1000,0x8)
所以当你看到这件衣服时候,有个表示告诉你他的属性是0xf,即1111,就表示4种颜色它全具备,如果属性是0xa,即1001,那表示它具有 蓝色 和 白色 2种属性。
这么讲比较通俗点吧。。。关键是 位运算 那章仔细看就懂了。
--------------------
2. c语言是面向过程的语言,c++是面向对象的语言,这是家喻户晓的,其实他们很相似,c的结构体,以及c++的类。
如果学习过c++就不难理解了,对象概念。结构体也是如此。 类下面定义了各种成员,其中包括成员变量,也包括成员函数,包括其他子类或子结构体。通过点“.”来找到他下一级的成员。
_dpmi_int()我才也是他其中的一个成员函数吧,寄存器这东西我也没接触过,只能先这么解释了,呵呵。
ps:_dmi_int吗?确定不是_dmi_init吗? init表示初始化的意思,一般类里的函数喜欢加这么一个初始化函数来补充构造函数没有做完的工作。
热心网友
时间:2023-10-15 13:26
你的程序时嵌入式中用的吧?你那个0xfff1是芯片的管腿地址。
第二个问题,_dpmi_regs是你的那个开发包特定的结构体,具体的你应该看你的sdk的说明文档!!
热心网友
时间:2023-10-15 13:27
Ox,应该是16进制的意思,fff1自然是数字了,
/*鼠标信息宏定义*/
#define WAITING 0xff00
#define LEFTPRESS 0xff01
#define LEFTCLICK 0xff10
#define LEFTDRAG 0xff19
#define RIGHTPRESS 0xff02
#define RIGHTCLICK 0xff20
#define RIGHTDRAG 0xff2a
#define MIDDLEPRESS 0xff04
#define MIDDLECLICK 0xff40
#define MIDDLEDRAG 0xff4c
#define MOUSEMOVE 0xff08
下面我给个不错的宏定义学习的链接
http://hi.baidu.com/315283700/blog/item/5280eecd85c94c1701e92813.html
至于下面的问题,呵呵,没接触过
C语言的小小问题,大家都进来看看
首先计算机运算全是通过2进制进行的,所以把16进制(0x 代表这个数是16进制的)转换成2进制,那么f 就是 1111 0xfff1 2进制表现就是 1111 1111 1111 0001 c语言基础教程书上都有这么一课,就是位运算,"|","&", 等等操作符。当表现一个对象有几种属性时候,它可以并列拥有几种属性,比如一件...
C语言的小问题,进来看看
while(k=0);这是个空循环,因为while到后面那个分号就结束了,而且不是while(k==0);,所以k被赋值成0,k=0的值是0,while(0)就进不去这个空循环了。k=k-1;//k==-1
关于c语言的问题,高手都进来看看,分高很哦!!!
if(c!='y'&&c!='n') { cout<<"指令错误!请重新输入!"<<endl; cin>>c; } } while(c=='y'); break; } case '5': { char n[20];int j=0;char c; do{ int flag=0; cout<<"请输入你要查询的学生姓名"<<endl; cin>>n; for(int j=0;j<i;j++) { if(strcmp(n,(*s[j]).n...
C语言求教。一个小小的编程问题,在线等
用100元人民币兑换10元,5元和1元的纸币(每一种都要有)共50张,请用穷举法编程计算共有几种兑换方案,每种方案各兑换多少张纸币. 数据输出格式: x = , y = , z = count = 输入输出样例: Input Sampl... 展开 老虎吉 | 浏览2192 次 |举报 我有更好的答案推荐...
C语言小小小小小问题
对于数组 i[I][10]来说,最大标号的元素应该是 i[I-1][10-1]你用i[I][2]也会出错啊 char的长度比较短,换成char*看看 这样改的:用char和char*都没错 char i[I][10];scanf("%c",&i[I-1][0]);printf("%c\n",i[I-1][0]);这样是没错的,有错的话,把错误贴出来看看...
C语言问题,不难的,进来看看嘛。好的,有有两个子函数void print1(){pr...
include <pthread.h>#include <stdio.h>#include <sys/time.h>#define MAX 10pthread_t thread[2]; //创建线程函数返回类型pthread_mutex_t mut; //互斥锁类型int number=0, i;void *print1() //线程函数{ printf("1\n"); pthread_exit(NULL);}void *print2(){ printf("2\n")...
一道关于C语言的题目,学过的都进来看看(二)
这个涉及到硬件,不知道你有没有相关的知识储备 这是共用体,你先为i赋值了266,两个字节 在内存中的存储状态是 0000 0001 0000 1010 但是你现在输出的是ch 这个只占1个字节 在内存中,低字节在前,所以输出的是 0000 1010 里的内容,所以是10 ...
关于C语言的一道题目 各位达人一定要进来看看 帮助一下 谢谢大家
left hand side of equation */ rightHandValue,i,j;char additiveOperator1 = '+',additiveOperator2 = '+',c;/* read compulsory parts of equation */ scanf( "%u %c %u = %u",&terms[ 0 ], &additiveOperator1, &terms[ 1 ], &terms[ 2 ] );/* any optional part? */ ...
那位C语言大神路过进来看看,询问一个挖雷得小问题,检查游戏状态_百度...
逻辑上没看出问题,有2个疑问:为什么是for(i=2;i<=10;i++),是9*9?最后return(m);是这么写吗,不是 return m吗;
C语言问题,进来看看,谢谢!
/* #include "genlib.h" */ define Epsilon 0.000001 //这里后面别加分号,不然编译时会把分号也加进去 define TRUE 1 //bool和true define FALSE 0 //false 我没用过,不过最好定义为这样 int ApproximatelyEqual (double x,double y); //bool我不清楚所以改这样 double min(doub...