有一句程序不懂,那位大侠帮帮我?? C语言的 PLAY[3] = *((U8*)(&ReceiveHighByte) + 1)/10;
编程软件比较多,但比较常用的是Visual C++6.0。
Visual C++6.0由Microsoft开发, 它不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。Microsoft的主力软件产品。Visual C++是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。
任何知识的学习没有太多捷径,但有经验、方法及教训
(1)基础教材选择-系统又通俗易懂,最好有该书配套免费视频
建议选择系统正统的大学教材,尽量不要选择“多少天精通C语言”等吸引眼球的教程,相信一点C语言学习没有速成。这里给大家推荐一本不错的入门教程:清华大学出版社-孙海洋-C语言程序设计,讲解很透彻、知识点很全面、例程较多且通俗易懂。优酷“孙海洋课题”还有全书免费教学视频,便于自学。
(2)动起手来--立马安装VC++6.0或VS开发环境
C语言是特别注重动手实操能力的课程!!动起手来,现在开始安装VC++6.0开发环境,从第一个经典程序“Hello,world!”开始,每一个例题及知识点均通过开发环境验证、理解深化。多做每一章小型实验操作(网上多得很)。提升代码调试能力。
(3)有了基础后,一般可以有两个发展方向可供选择
(i)转向项目实战
建议购买一本C语言项目教程,在实践项目中强化理论知识的学习。
(ii)继续深入理论学习
建议购买国外经典深入学习C语言的教程,人民邮电出版社-C Primer Plus(第5版),或者 机械工业出版社-C程序设计语言(第2版.新版)
下定信心,坚持下去!希望对你有所帮助。
下面是转载的 孙海洋 版 C语言程序设计 部分内容截图。
&ReceiveHighByte 取到地址,即该变量的起始地址
(U8*)(&ReceiveHighByte) 将上一步得到的地址转化成char*型地址,每个char只占一位
(U8*)(&ReceiveHighByte) + 1 因为是char*地址类型,所以+1,是跳1位8个字节,即指向后一位的内容
在计算机中存储是低位在前,高位在后,所以上一步得到的是ReceiveHighByte的高位,即0x07,下面就简单了。
*((U8*)(&ReceiveHighByte) + 1) 取到地址中存的数据0x07
*((U8*)(&ReceiveHighByte) + 1)/10 0x07/10 = 0
总之这是一个取int型高位的方法
PLAY[3] = *((U8*)(&ReceiveHighByte) + 1)/10;
//取变量RecelveHighByte的地址,并转换为unsigned char 类型指针,地址+1后取地址指向的字节数值((这句可能是取一个16位整数的高位或低位字节吧)并/10后赋给 PLAY[3];
typedef unsigned char U8; //将 unsigned char 定义一个简单的别名 U8;
unsigned int ReceiveHighByte;//这里ReceiveHighByte是无符号整数型,所以上面要转换一下。
typedef unsigned char U8;
替代法U8定义的变量都在unsigned char U8替代U8
例子:U8 *p,c;
替代后实际意义为:unsigned char *p,c;
unsigned int ReceiveHighByte;
unsigned: 无符号修饰
int :integer数据类型
unsigned int: 意思为无符号int类型
ReceiveHighByte: 变量名
unsigned int ReceiveHighByte;:意思为无符号整型变量ReceiveHighByte
把ReceiveHighByte地址后面的一个地址中存放的值除以10取整然后赋值给 PLAY[3]
一段小C语言程序看不懂,请教
我来说说看。如果switch的值是0,那么执行case0、case1、case2,直到case2后面的break结束;如果switch的值是1,那么执行case1、case2,直到case2后面的break结束;如果switch的值是2,那么执行case2和后面的break结束;如果switch的值是3,那么执行case3、default,直到default后面的break结束;如果是其他值...
程序有点看不懂,大神指导下
关键是在这一步 for(i=0;i<10;i++)p++=i; \/\/通过指针给数组输入数据,p++ = i,拆开理解,操作顺序为*p = i;p = p+1;两步。所以for循环结束之后,执行了10次p = p+1,这样p就只想了a[11](这其实是不存在的,如果后面再用变量p的话就会出错),因为你 后面的for循环使用的...
下面程序有三处不懂之处,还望大神解答。谢谢!
程序本身有就有问题 所以才不容易看懂 思路上 就是用d保存最小的差值 也就是最接近平均数的那个数 和平均数的差值 1.赋值为32767是16位整型所能表示最大的数 事实上 由于传入的是double型数组 这个赋值是不准确的 2.小于平均值且最接近的一个判断 3. 如果当前x[i]是符合判断的 那么差值保存在...
帮忙讲解下程序几个不懂的地方把。很简单的程序
根据习惯,如果最后一行是完整的,我们会敲入换行符,那么由于while循环里的第一个if语句(c=='\\n'),则这一行会被统计到行数,但是如果输入的最后一句话不是完整的一行,我们一般会输入句号结尾(或其他非换行符),则最后一行不会输入换行符,最后一行不会被统计到行数,此时由于最后一个字符被赋值...
c程序的一部分程序看不懂
代码功能是复制src中,从src[0]向后中第一个不为0的字符串,到dest中 详细解释如下:void Right(char *src,int n,char *dest){int i,j,k;for (i=0;*(src+i)!=0;i++)\/\/定位src中第一个不为0的字符位置{;}for (j=i-n,k=0;j...
(入门级)C语言程序 看不懂,求详细每行注释
15.写出下列程序的运行结果:___3 4___。 main() \/\/C语言主函数 { int n; \/\/定义变量n For(n=3; n<=10; n++) \/\/从n=3开始,做一个循环,每次n加1,n>10时结束循环 { if(n%5= =0)break; \/\/ 如果n除以5余0,就退出for循环 Printf(“%d”,n...
c语言这程序看不懂
约定2:if(x)约定。 当x为0时为false,x为非0值时默认为true。约定3:当if或else没有大括号时,默认把下一行作为其执行语句,若下一行也是if或else则继续该规则。因此最后两个if(!c)和else其实是 else if(!b)的子项,因为(!b)不成立所以根本没后面两条的判断。这个题没有进任何判定分支。...
这个c语言程序不懂,大神讲解一下
a是一个为5*5的二维数组,第一列是1,2,3,4,5,第二列是2,4,6,8,10.。。第五列是5,10,15,20,25 输出的结果就是这么一个矩阵,对角线是1,4,9,16,25
51单片机程序看不懂了谁来讲讲
上电复位后 长跳转到程序段的start标号位置org 000bh ; 定时计数器t0的中断向量入口地址ljmp t0int ; 因为中断向量表空间有限所以应在此添加长跳转指令而不是功能函数段; === 程序段 ===org 0030h ; 一般程序段应跳过中断向量表; -= t0定时计数器中断 =-t0int: ; 定时计数器...
C语言程序看不懂
if(a[0]!=0)这个判断的意思只是判断数组a的第一个元素是否不是0,如果不是0那就执行这个if语句下面的花括号里的代码,如果是0,那就走if下面紧接着的else里的代码。这个if语句只作流程控制,不会把什么东西变成0,一定是别的地方做了什么 ...
费贩地喹: 标准c语言int是16位2个字节,如:ReceiveHighByte=2013(0x07DD) 占两个字节,分别是0x07和0xDD&ReceiveHighByte 取到地址,即该变量的起始地址(U8*)(&ReceiveHighByte) 将上一步得到的地址转化成char*型地址,每个char只占...
沧县15273055103: 字符串排序,学长给了我个程序,但我看不懂,哪位大侠可以帮我逐句解释一下!小弟在此谢过了 - ?
费贩地喹: #include//调用stdio库 #include //调用string库 int main() { char in[100]; //定义输入字符串存储的空间 100 unsigned short count[256]={0}; //定义计数的空间256 并全部初始化为0 int len,i,j; //定义三个临时变量len 长度,i,j循环时用的临时变量 scanf(...
沧县15273055103: vc++ windows编程 有一段语句看不明白 (电子钟程序) - ?
费贩地喹: 两个GetLocaleInfo是固定调用方法,你会看MSDN,无需多讲. f24Hour = (szBuffer[0] == '1') ; f24Hour:是否24小时制的时间格式,1表示“是” fSuppress:是否显示前置的'0',如8点6分,是表示成08:06还是8:6. InvalidateRect (hwnd, NULL, TRUE) ; 这句刷新窗口,其实主要目的是更新时间显示.
沧县15273055103: 一道关于C#的程序题,有几句代码看不懂,请各位大侠帮忙! - ?
费贩地喹: DataTable dt = ds.Tables[0]; //取DataSet 集合中的第一个 dt 表. sda.FillSchema(dt, SchemaType.Mapped); //FillSchema是用来向DataTable中填入详细的元数据信息的,例如(column names, primary key, constraints等),但不填入数据.DataRow dr = dt.Rows.Find(txtNo.Text); //找到dt表中主键为此编号的行. txtNo.Text = dataGridView1.SelectedCells[0].Value.ToString(); //grid选中行第1单元格值.
沧县15273055103: 一句C#程序代码求大侠详解!!麻烦大伙啦!越详细越好! - ?
费贩地喹: 1、richTextBox1.SelectionStart richTextbox1中的选中开始位置,没有选中,即为光标所在位置2、richTextBox1.GetLineFromCharIndex(richTextBox1.SelectionStart) 从 RichTextBox 中指定字符位置检索行号3、richTextBox1.GetFirstCharIndexFromLine检索给定行第一个字符的索引.不知道为啥要这样写,直接不就行了吗? statusStrip1.Items[1].Text = "Col " + (1 + richTextBox1.SelectionStart);
沧县15273055103: C程序出现一个小小的问题,可是我看不懂,那位大侠帮忙解决一下. 由于字数限制希望能QQ解决:540129534?
费贩地喹: 缺少函数原型!你把main函数放在dis_write_cmd函数的前面!但没有在main之前给出该函数原型.另外,dis_write_cmd如果在其他文件中,则可使用include包含进来.
沧县15273055103: 程序老是输出 - 1#IND 哪位大侠帮我看看啊 感激不尽 - ?
费贩地喹: 有除零操作.应该是算法的问题.不知你这个程序的设计要求是什么,运行的时候X0的值会越来越小,一直到等于0,而while循环里的a/(3*x0*x0)在x0=0时,则变成了除0操作,会出错.仔细看看算法是否正确.
沧县15273055103: 那位大侠能帮我讲讲8255A初始化的语句意思啊,我不知道怎么初始化 - ?
费贩地喹: 单片机对8255的操作实际上就是对一组地址的操作,对8255的初始化实际上就是告诉单片机8255的地址,以便单片机对8255进行控制,关于8255地址的确定,如果不懂,可以问我. 以下程序供你参考:#include #include#define a8255_PA XBYTE[0xFF7C] /*PA口地址*/#define a8255_PB XBYTE[0xFF7D] /*PB口地址*/#define a8255_PC XBYTE[0xFF7E] /*PC口地址*/#define a8255_CON XBYTE[0xFF7F] /*控制字地址*/ main() { for(i=0;i a8255_PA=0xff; }
沧县15273055103: 我要编写一个Pascal程序,if语句:和电脑猜拳.那位大侠帮我一下?跪求 - ------------?
费贩地喹: 用随机吧program ddd; var computer,player;beginrandomize;repeatcomputer:=trunc(random(3)+0.5);read(player);until player<...
沧县15273055103: 大侠们帮我解释一下这个C语言源程序 - ?
费贩地喹: while (*str && *str != ch) str++; 这句的作用是指针循环后移,当str指向的内容不为'\0',而且str!=ch为真的时候,指针往后指一位.你的问题是:那怎么能找出不同的那个字母呢?这个循环并不查找不同的那个字母,而是通过循环,查找每一...