c语言问题

作者&投稿:祢师 (若有异议请与网页底部的电邮联系)
c语言问题~

首先我们计算mpll_val的值。这里涉及两个操作符<<(左移)和|(异或),都是二进制运算符。具体定义这里就不说了,可以自己查下。
mpll_val = (92<<12)|(1<<4)|(1);
92转换成二进制为01011100,将此数左移12位,也就是后面加12个0,变成01011100000000000000,转换成十进制为2^14+2^15+2^16+2^18 = 376832,
同理,1<<4转换成十进制为16,上面mpll_val = 376832|16|1,这个其实就相当于
376832+16+1(很简单,知道了异或的规则用二进制计算就知道了)。因此:
mpll_val = 376849

下面的rMPLLCON的值计算需要理解三个概念:函数,参数,异与操作符
函数指的的就是void ChangeMPllValue(int mdiv,int pdiv,int sdiv);
参数指的是这个函数中定义的三个整型参数,在下面的具体声明中,也是这三个参数:
void ChangeMPllValue(int mdiv,int pdiv,int sdiv){rMPLLCON = (mdiv<<12) | (pdiv<<4) | sdiv;}
最后实现过程ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);这三个参数分别对应(mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3这三个值。
这里我们只将第一个参数的值(mpll_val>>12)&0xff是多少:
mpll_val我们刚才已经计算为376849,现在mpll_val>>12就是右移,与左移相反,等于我们又将mpll_val打回原形变成了92,那么下面我们计算92&0xff,这里我们需要知道0xff是一个十六进制数。
以0x开始的数据表示16进制,0xff换成十进制为255。A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。16进制变十进制:f表示15。第n位的权值为16的n次方,由右到左从0位起。 0xff = 15*16^1 + 15*16^0 = 25516进制变二进制再变十进制: 0xff = 1111 1111 = 2^8 - 1 = 255
也就是92&255,用二进制表示就是
01011100
&11111111
=01011100
因此(mpll_val>>12)&0xff的值就是92,同理可以得出后面两个参数的值。最后代入
rMPLLCON = (mdiv<<12) | (pdiv<<4) | sdiv;(计算得知mdiv = 92,pdiv = 1, sdiv = 1)
最后计算rMPLLCON,你一定以为是376849,但是不是的,结果应该是没办法写入的,因为
#define rMPLLCON (*(volatile unsigned *)0x4c000004)//MPLL Control
简单来说这句话就是定义rMPLLCON为一个指向固定地址的常量,不是变量,具体参考http://blog.sina.com.cn/s/blog_65861d3f0100xsz0.html
最后,提供一个验证程序,自己调试看看吧:
#include#includevoid ChangeMPllValue(int mdiv,int pdiv,int sdiv);#define rMPLLCON (*(volatile unsigned *)0x4c000004)//MPLL Controlint main(){unsigned int mpll_val =0;mpll_val = (92>12)&0xff;ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);getch();return 0;}void ChangeMPllValue(int mdiv,int pdiv,int sdiv){rMPLLCON = (mdiv<<12) | (pdiv<<4) | sdiv;}

先回答你第一个问题,递归函数确实是让ch变量不断获得新的值,从1到5。需要注意的是,之后每一次的赋值只在当前的大括号内有效:


void get_put()
{
char ch;
ch=getchar();
if (ch!='
')
get_put();//这里相当于再次出现了一个函数的大括号(get_put函数),对于这个大括号以内,ch被再次赋值由1变为2,但以外(下面的putchar)ch仍为1
putchar(ch);
}

以此类推。

第一个问题,你已经注意到这是递归了,那么输入12345并按回车后,自然出现了get_put函数五层嵌套,也就有5次putchar了。

如有问题欢迎追问~

可能是你缺少了编译器,去下载一个gcc(linux)或者MinGW/Cygwin(Windows)就行了。

LZ可以按以下方法进行问题排除:
1. 检查代码。
2. 检查IDE程序。(写一个Hello world试试看)

#include <iostream>

using namespace std;

int main()
{
cout<<"Hello world!";
return 0;
}

楼上都错
TbMenu18.ocx
这个文件你的电脑里没有的原因

有什么错误提示吗?


关于语言的一些问题
这涉及到高等语言学(人类语言学、社会语言学、结构主义等)的知识,我也不便多说。简单的说,语言使人的思维变得有条理、脉络清晰。但也会给人们带来趋同呆板的思维定势。语法是语言的架构,是服务于人的交流与记录的。语法是无形产生的,也可以出自计划。这得由生产力与语言的关系而定。语法复杂化,...

关于语言的问题
现代各地口语里也常常有些词语起源于避讳;不久以前,很多行业有各自的避讳字眼。从前有些人家,因为小孩儿不懂得避讳,在堂屋里贴一张纸条“童言无忌”,意思是小孩儿说的话不算数。凡有人类的地方就会有语言。世界上到底有多少种语言呢?据德国出版的《语言学及语言交际工具问题手册》说,现在世界上...

几个关于语言学的问题
有一些单词楼主打的不对,所以一些单词没法译,内容不难,准确率应该可以。(附,全是人工,我自已译的)_1、是什么组合了全球语言? 为什么是英语,而不是其它语言?2、什么是语言发生变化的动机呢?3、为什么说英语是目前interwing事业史同步,历时apporaches?4.什么是各种语言的共同特点呢?5、是什么...

在语言教学中存很多问题,要如何解决呢?
所学的英语知识不能灵活运用。就是说,过于强调笔试! 学校与学校之间的考试成绩,班与班之间的考试成绩,学生与学生之间的考试成绩,主要是单词和语法。教学呆板、枯燥,英语学习效率不高! 如何改善,就是要从根本上解决问题,也就是谁能改变教育体制改革者开始改变! 让课堂教学变得更加有趣,从语言学习...

一个c语言小问题,编写程序?
按照题目要求编写的C语言程序如下(见图)

在语言教学中存很多问题,我们应该如何应对呢?
我们的生活每时每刻都会发生着各种各样的变化 ,随着社会经济的发展,我国的教育行业也发展了起来 。但是我们不得不承认的一点就是我们的教育中还是存在一些缺点的 ,例如幼儿园的一些语言教学问题 。我针对这样的问题,我们应该如何解决呢?或者说我们采用何种方法才能有效地提高教学能力以及语言沟通能力 ...

玄奘取经的路途遥远,如何解决语言不通的问题?
玄奘西渡大家都知道,唐僧团队取经行程十万八千里,经过了宝象国、乌鸡国、比丘国、朱紫国、灭法国、车迟国、女儿国、祭赛国、天竺国,还有妖精把控的狮驼国,他们又没带有翻译,那个时候更没有百译通,他们是怎么解决语言问题的呢?要回答这个问题之前,我们先看一下唐僧的原型,玄奘法师是如何做到的。贞...

语言学问题
1. Phonetics, Phonology, Morphology, Syntax, Semantics and Pragmatics.2. Linguistics can be defined as the scientific or systematic study of language. It is a science in the sence that it scientifically studies the rule,systems and principles of human laguages. It deals with a wide...

唐僧取经经过了十多个国家,语言不通问题怎么解决的?
然而,在《西游记》中,唐僧团队取经行程十万八千里,经过了宝象国、乌鸡国、比丘国、朱紫国、灭法国、车迟国、女儿国、祭赛国、天竺国,狮驼国,他们又没带有翻译,更没有电子翻译产品,他们是怎么解决语言问题的呢?首先我们来看看唐僧的原型玄奘法师现实是怎样解决语言问题。话说,玄奘法师想公旨去印度...

语言学的几个问题
言语 语言的含义:语言是人类重要的交际工具,也是正常成人赖以进行思维的工具,语言是一种符号系统,它包括语音系统、词汇系统、语法系统。语言具有下列基本特征:第一、 语言的能产性(创造性);第二、 语言结构性;第三、 语言的意义性;第四、 语言的社会性和个体性;第五、 语言...

莲都区17232281584: C语言问题:C语言中没有逻辑量,在判断一个量是否为真时以( ) 代表“真”,以 ( )代表“假C语言问题:C语言中没有逻辑量,在判断一个量是否为真... -
乐彭滑膜:[答案] C语言没有专门bool(布尔)类型数据, 在C语言中用0表示假,其余非0整型数据表示真. 例如 int i=7,j=0; if(i) printf("%d",i); if(j) prinftf("%d",j); 结果只会显示7.

莲都区17232281584: C语言问题 -
乐彭滑膜: A、正确; B、等号左边不能有算术表达式,错误; C、同上,错误; D、定义语句只能是变量,赋值表达式,不能是纯算术表达式;错误; 虽然楼主有补充说是D,但我认为是A正确,题面己说x,y正确定义,那就...

莲都区17232281584: C语言问题,求高手解答.:C语言问题,小白勿入描述:FOR语句循环,我们假定有三个循环.当程序运行到一定程度时怎样让语句从第三个循环返回时直... -
乐彭滑膜:[答案] 如果只是单纯的实现问题的功能. goto语句就可以了.(虽然goto有点不利于程序可读.但是这里用goto是最直接的方法.) 下面是伪代码: firstFor: for(参数)//第一个for循环 { for(参数)//第2个for循环 { for(参数)第3个fo...

莲都区17232281584: 关于C语言的问题
乐彭滑膜: int a=10; a+=a-=a-a (此题是:复合赋值表达式,复合赋值运算符的运算优先级与赋值运算符的优先级相同(优先级都非常低),运算方向均为自右向左.(1)先计算最右边的表达式a-a的值为0. (2)再计算a-=0,该表达式等价a=a-0=10.(此时...

莲都区17232281584: c语言问题 -
乐彭滑膜: 此问题涉及全局变量和局部变量的作用域:#include <stdio.h> int c=1; main() { int a=2,b=3; a=b; //到这里确实是a=b=3; { int b=5,c=6; a=2*b; } //到这里后a=10;b=5; printf(“%d”,a); //所以输出a的值是10;} 上面程序是说明局部变量的作用域是...

莲都区17232281584: 简单的C语言问题 -
乐彭滑膜: main() int a,b,c,t; scanf("%d%d%d",&a,&b,&c); /* 输入三个数 */ printf("a=%d,b=%d,c=%d",a,b,c); /* 做比较用 */ t=a;a=b;b=t; /* 现在b原来的值变成了a的值,a原来的值变成了b的值 */ t=a;a=c;c=t; /* 这时候 a的值(其实是b的原值) 变成了c的值,也就等于b 的值给了C;*/同时C的值也给a printf("%4d,%4d,%4d",a,b,c); }

莲都区17232281584: C语言问题解答
乐彭滑膜: C语言是一种计算机程序设计语言.它既有高级语言的特点,又具有汇编语言的特点.它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不 依赖计算机硬件的应用程序.因此,它的应用范围广泛. C是结构...

莲都区17232281584: 关于C语言编程问题 -
乐彭滑膜: "我在TURBO C上运行了也没有错误"按Ctrl+F9运行……另外在TC的文件夹里(默认),生成了对应的exe文件,那个程序可以用于发布.引用一下别人说的:“珍爱生命,远离TC”……

莲都区17232281584: C语言问题 -
乐彭滑膜: 递归计算阶乘输出y=24程序有个错误fac(int n,int *t) { int s; if((n==1)||(n==0)) *t=1; else{fac(n-1, *t=n*s;} /* ...

莲都区17232281584: c语言问题 -
乐彭滑膜: 楼主的输出结果是错误的,应该是0,3,5 c=(a-=a-5),(a=b,b=3); 这一句先因为赋值的优先级高于逗号表达式的优先级,因此c的值为(a-=a-5)的值,其中a被赋值为5,然后赋值给c,(这里懂?),在表达式(a=b,b=3)里,又给a赋值,由于b此时等于0,因此a被赋值为0,然后是b=3 因此最后输出结果是 0,3,5 希望对你有帮助!

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网