| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2711 人关注过本帖
标题:初学按键码 急需资料
只看楼主 加入收藏
xuesuyu
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-9-10
收藏
 问题点数:0 回复次数:19 
初学按键码 急需资料

本人正在学C关于扫描码有点疑问

在很多 小游戏里 都有这个定义
#define LEFT 0x4b00
#define RIGHT 0x4d00......
我用以下程序输出他们的扫描码
#include<stdio.h>
#include<bios.h>
void main()
{int key;
key=bioskey(0);
printf("%x\n",key);
getch();
}
结果发现并没有 前面的 0x 因此产生疑问前面的 0x是什么意思呢?
高手给讲解下 谢谢拉

[此贴子已经被作者于2006-9-18 20:49:34编辑过]

搜索更多相关主题的帖子: 资料 key 初学 疑问 define 
2006-09-18 14:09
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
0x4b00中的0x是编译使为了辨别16进制用的
运行的时候当然没必要再打
#include<stdio.h>
#include<bios.h>
void main()
{int key;
key=bioskey(0);
printf("0x%x\n",key);/*你自己加个0x不就行了*/
getch();
}
2006-09-19 06:54
神经塔
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1987
专家分:4
注 册:2006-7-1
收藏
得分:0 
0x是16进制的,b是2进制的,d是10进制的!o是8进制的!

[shadow=255,red,2]待到秋来九月八,我花开时百花杀。冲天香阵透长安,满城尽是黄金甲。 [/shadow]
2006-09-19 09:48
wonshing
Rank: 1
等 级:新手上路
帖 子:76
专家分:0
注 册:2006-5-7
收藏
得分:0 
改动程序:
#include<stdio.h>
#include<bios.h>
void main()
{int key;
key=bioskey(0);
printf("%#x\n",key);
getch();
}
即可输出16进制标志0x

别人笑我太疯癫,我笑他人看不穿 C , ASM , MCU , JAVA , Linux , VHDL , EDA ,PLC
2006-09-19 12:17
xuesuyu
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-9-10
收藏
得分:0 

哦~~谢谢 但是我又产生了一个新的问题 还望楼上的能帮忙解决下
还是上面的函数
我用%#d %#o 输出UP键的扫描码 输出结果如下 18432 044000
用%d %o输出的时候 是 18432 44000
用下面程序检测 是否按了UP键
本来用的#define UP dl8432 和#define UP o44000结果不行 改成了下面的结果行了
不太明白原理 高手可以讲解下么?3楼的斑竹不是说 o 是8进制 d是10进制的么?
#include<stdio.h>
#include<bios.h>
#define UP 044000 /*或0x4800或18432同样效果*/
void main()
{
if(bioskey(0)==UP)
printf("up ");
getch();
}


2006-09-19 14:03
wonshing
Rank: 1
等 级:新手上路
帖 子:76
专家分:0
注 册:2006-5-7
收藏
得分:0 

你看看我的这个程序:
#include "stdio.h"
#include "bios.h"
#define ESC 0x011b
int main()
{
int key;
for(;;)
{
if(bioskey(1));
{
key=bioskey(0);
if(key==ESC)
goto A;
else
printf("Keymode=%#x\n",key);
}
}
A:return 0;
}

TC下调试成功,能正确返回带16进制标志的按键码


别人笑我太疯癫,我笑他人看不穿 C , ASM , MCU , JAVA , Linux , VHDL , EDA ,PLC
2006-09-19 16:13
xuesuyu
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-9-10
收藏
得分:0 

我的意思是 用#define 0x 4800 和#define 18432 和 #define 044000 是同样的效果
系统 默认的 10进制数字 不用在扫描码前面加符号
而 #define 8进制扫描码 的要在前面+上一个0
我上面的个人理解正确么??
高手能跟我讲解一下原理么????

[此贴子已经被作者于2006-9-20 12:18:31编辑过]


2006-09-20 12:16
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
以下是引用xuesuyu在2006-9-20 12:16:29的发言:


系统 默认的 10进制数字 不用在扫描码前面加符号


不能说是系统
应该说是编译器

2006-09-20 12:33
xuesuyu
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-9-10
收藏
得分:0 

哦谢谢 不过说实话 虽然已经明白很多关于C的函数 关键字。。。了 但是总感觉自己没有 真正的理解
总觉得自己只不过是看到表面的东西 是不是要学过汇编 才能更深刻的理解c呢??


2006-09-20 13:11
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 

语言是个工具
编程还是为了用于计算机
所以主要原因是计算机硬件和软件原理的问题

2006-09-20 13:59
快速回复:初学按键码 急需资料
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017931 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved