鱼C论坛

 找回密码
 立即注册
查看: 5200|回复: 16

题目不知道怎么表达,请进来看下,谢谢!

[复制链接]
发表于 2013-4-30 14:42:25 | 显示全部楼层 |阅读模式
2鱼币
#include <stdio.h>

void main()
{
        int a,b=322;
        float x,y=8.88;
        char c1='k',c2;
        a=y;
        x=b;
        a=c1;
        c2=b;
        printf("%d\n%f\n%d\n%c\n",a,x,a,c2);
}
谁能为我解释一下以上代码是怎样运行的?我试着一步步分解这个代码,但是最后我计算出的答案与以上代码运算后的答案不符,所以上来求助下,谢谢!
只要跟我具体说下是怎么运行的就行了。

最佳答案

查看完整内容

在论坛里有这类贴, 你找来看下, c2 = b那里, 是整型赋给字符型, 不过那整型太大了, 超出了字符C2的范围了, 只能取低八位, 最后变成'B'
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-30 14:42:26 | 显示全部楼层
  1. #include <stdio.h>

  2. void main()
  3. {
  4.         int a,b=322;
  5.         float x,y=8.88;
  6.         char c1='k',c2;
  7.         a=y;                        //a = 8.88 --> a = 8;
  8.         x=b;                        //x = 322 --> x = 322
  9.         a=c1;                        //a = 'k' --> a = 107 小写k对应的asii码
  10.         c2=b;                        //c2 = 322 --> 取低八位01000010 --> c2 = B
  11.         printf("%d\n%f\n%d\n%c\n",a,x,a,c2);
  12. }
复制代码
在论坛里有这类贴, 你找来看下, c2 = b那里, 是整型赋给字符型, 不过那整型太大了, 超出了字符C2的范围了, 只能取低八位, 最后变成'B'
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-4-30 16:06:11 | 显示全部楼层

哦,谢谢哈,我都看了差不多两天了。。
  我是在论坛逛过之后才发帖的。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-4-30 16:10:52 | 显示全部楼层
avpemp 发表于 2013-4-30 16:06
哦,谢谢哈,我都看了差不多两天了。。
  我是在论坛逛过之后才发帖的。。。

你百度一个, “”“把整型赋给字符型”
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-4-30 16:21:08 | 显示全部楼层
喜欢散步 发表于 2013-4-30 16:10
你百度一个, “”“把整型赋给字符型”

那个输出的a不是应该等于8么?怎么也会是107的?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-4-30 16:24:17 | 显示全部楼层
avpemp 发表于 2013-4-30 16:21
那个输出的a不是应该等于8么?怎么也会是107的?

下面有一个a = c1 看到没, 把字符c1赋给a, 而c1 = k 对应的 十进制是107, 所以a就等于107
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-4-30 16:29:04 | 显示全部楼层
喜欢散步 发表于 2013-4-30 16:24
下面有一个a = c1 看到没, 把字符c1赋给a, 而c1 = k 对应的 十进制是107, 所以a就等于107

后面的a=c1 输出的是107这个我知道,可是前面那个a=y,最后输出的是应该是8呀,可为什么会是107,我就不太理解了。
   
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-4-30 16:44:22 | 显示全部楼层
  1. #include <stdio.h>
  2. int main()
  3. {
  4.       int a = 1;
  5.       a = 2;
  6.       printf("%d", a);
  7.       return 0;
  8. }
复制代码
你说这里是输出1还是输出2~~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-4-30 16:45:11 | 显示全部楼层
喜欢散步 发表于 2013-4-30 16:44
你说这里是输出1还是输出2~~

是输出2。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-4-30 16:48:53 | 显示全部楼层
avpemp 发表于 2013-4-30 16:45
是输出2。。。

那再问一下你上面输出的是8还是107?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-4-30 16:50:28 | 显示全部楼层
喜欢散步 发表于 2013-4-30 16:44
你说这里是输出1还是输出2~~

可以给你QQ我不?这样可以方便请教你。。我保证不会经常打扰你的。除非是实在不懂的我才会发帖求助的。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-4-30 16:52:22 | 显示全部楼层
喜欢散步 发表于 2013-4-30 16:48
那再问一下你上面输出的是8还是107?

不知道,反正我感觉输出的应该就是8。
       不清楚为什么会是输出107.
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-4-30 16:57:30 | 显示全部楼层
avpemp 发表于 2013-4-30 16:52
不知道,反正我感觉输出的应该就是8。
       不清楚为什么会是输出107.

程序不是赋值两次吗, 第一次为a = 8, 而在下面, 再赋值为a = 107,
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-4-30 17:02:24 | 显示全部楼层
喜欢散步 发表于 2013-4-30 16:57
程序不是赋值两次吗, 第一次为a = 8, 而在下面, 再赋值为a = 107,

那意思是不是相当于在最后的输出里面,a=y被a=c1给代替了,最后是a=c1输出了两次?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-4-30 17:26:39 | 显示全部楼层
喜欢散步 发表于 2013-4-30 16:57
程序不是赋值两次吗, 第一次为a = 8, 而在下面, 再赋值为a = 107,

第一个问题我已经懂了,谢谢哈!
   现在我还想问一个问题。c2 = b那里, 是整型赋给字符型, 不过那整型太大了, 超出了字符C2的范围了, 只能取低八位, 最后输出'B'。这一段不懂。我记得ASCII值最高也就只到255,但是322已经超出255了,该怎么办?能详细跟我说下吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-4-30 17:35:08 | 显示全部楼层
avpemp 发表于 2013-4-30 17:02
那意思是不是相当于在最后的输出里面,a=y被a=c1给代替了,最后是a=c1输出了两次?

已经知道了。谢谢啦。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-4-30 17:41:42 | 显示全部楼层
avpemp 发表于 2013-4-30 17:35
已经知道了。谢谢啦。

http://zhidao.baidu.com/question/82751171.html
小甲鱼的汇编中好像也有这样的问题讲解, QQ522468522, 我是菜鸟,加个QQ一起学习吧
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-30 09:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表