看看你的C语言水平如何-- <测试1>

[复制链接]
4814|26
 楼主| mindshare 发表于 2012-5-29 11:06 | 显示全部楼层 |阅读模式
本帖最后由 mindshare 于 2012-5-29 11:08 编辑

不上机你能知道答案吗? :)

void main(void)
{
unsigned int i = 1;
unsigned int j = 9;
if(i>j)
{
i++;
}
else
{
j++;
}

if((i-j)>=0)
{
i++;
}
else
{
j++;
}
}
李进 发表于 2012-5-29 11:09 | 显示全部楼层
i=1; j=11
 楼主| mindshare 发表于 2012-5-29 11:09 | 显示全部楼层
  1. void main(void)
  2. {
  3.         unsigned int i = 1;
  4.         unsigned int j = 9;

  5.         if(i>j)
  6.         {
  7.                 i++;
  8.         }
  9.         else
  10.         {
  11.                 j++;
  12.         }

  13.         if((i-j)>=0)
  14.         {
  15.                 i++;
  16.         }
  17.         else
  18.         {
  19.                 j++;
  20.         }       
  21. }
 楼主| mindshare 发表于 2012-5-29 11:12 | 显示全部楼层
  1. void main(void)
  2. {
  3.         unsigned int i = 1;
  4.         unsigned int j = 1;

  5.         if(i=j)
  6.         {
  7.                 i = 0;
  8.                 j = 0;
  9.         }

  10.         if(i=j)
  11.         {
  12.                 i = 2;
  13.                 j = 2;
  14.         }
  15. }
 楼主| mindshare 发表于 2012-5-29 11:26 | 显示全部楼层
看看下面会有什么效果?
  1. void main(void)
  2. {
  3.         char message1[] = {'H','e','l','l','o',0};
  4.         char message2[] = "Hello";
  5.         char *message3  = "Hello";

  6.         message1[0] = 'h';
  7.         printf("%s \n",message1);
  8.         message2[0] = 'h';
  9.         printf("%s \n",message2);
  10.         message3[0] = 'h';
  11.         printf("%s \n",message3);
  12. }
 楼主| mindshare 发表于 2012-5-29 11:37 | 显示全部楼层
看看哪些定义是非法的 :)
  1. typedef struct TEST_S
  2. {
  3.         int a;
  4.         int b;
  5.         struct TEST_S *test;
  6. }TEST_D;

  7. typedef struct TEST_S
  8. {
  9.         int a;
  10.         int b;
  11.         struct TEST_S test;
  12. }TEST_D;

  13. typedef struct TEST_S
  14. {
  15.         int a;
  16.         int b;
  17.         TEST_D *test;
  18. }TEST_D;

  19. typedef struct TEST_S
  20. {
  21.         int a;
  22.         int b;
  23.         TEST_D test;
  24. }TEST_D;
 楼主| mindshare 发表于 2012-5-29 13:17 | 显示全部楼层
i=1; j=11
李进 发表于 2012-5-29 11:09

嘿嘿,不对,再猜
SLEET1986 发表于 2012-5-29 13:53 | 显示全部楼层
i=2;j=10;无符号问题

评分

参与人数 1威望 +1 收起 理由
mindshare + 1

查看全部评分

rockli 发表于 2012-5-29 14:13 | 显示全部楼层
不上机你能知道答案吗? :)

void main(void)
{
unsigned int i = 1;
unsigned int j = 9;
if(i>j)
{
i++;
}
else
{
j++;
}

if((i-j)>=0)
{
i++;
}
else
{
j++;
}
}
mindshare 发表于 2012-5-29 11:06


如果是单片机的c语言编译器,结果不可预料。两个变量未对寄存器做任何操作,一般是被优化没了。
 楼主| mindshare 发表于 2012-5-29 14:56 | 显示全部楼层
本帖最后由 mindshare 于 2012-5-29 14:58 编辑

看看 n是什么结果
  1. int main(void)
  2. {
  3.         int n = 2;

  4.         if(n>=3)
  5.              return
  6.         n++;
  7.         n++;
  8.         n++;
  9.         printf("%d \n",n);
  10.         return 0;
  11. }
ohnoyes 发表于 2012-5-29 15:45 | 显示全部楼层
本帖最后由 ohnoyes 于 2012-5-29 15:50 编辑

10# mindshare
n=4,
renturn n++;条件不满足,无效,此时n=2。
第二个n++;后n=3;
第三个n++;后n=4;

评分

参与人数 1威望 +1 收起 理由
mindshare + 1

查看全部评分

O狂且O 发表于 2012-5-29 17:50 | 显示全部楼层
unsigned 型, i - j >= 0 恒成立. 所以 i = 2; j = 10;
  1. // 应该不考虑编译器优化, 加 volatile 就是
:lol
那个 n 明显是 4.
nongfuxu 发表于 2012-5-29 18:09 | 显示全部楼层
编程最需要的是整体思维,程序构架思维。
ytfdhb 发表于 2012-5-29 18:18 | 显示全部楼层
1、第一题是无符号的问题
2、第二题是赋值号(“=”)与恒等符号(“==”)的细节问题
3、第三题应该是指针相关的东东吧
。。。
mpuhome 发表于 2012-5-29 19:49 | 显示全部楼层
还在关注细节问题的阶段啊
linbei1988 发表于 2012-5-29 21:26 | 显示全部楼层
首先LZ自己就不合格了。。明明定义的无符号数却这样去判断
李冬发 发表于 2012-5-30 01:45 | 显示全部楼层
第3题,要是换在早些年的PC上,运行的是DOS3.2里的编译器编译出代码,运行的很给力的。
Periodic 发表于 2012-5-30 08:44 | 显示全部楼层
第3题,要是换在早些年的PC上,运行的是DOS3.2里的编译器编译出代码,运行的很给力的。
李冬发 发表于 2012-5-30 01:45


????????????
silong1123 发表于 2012-5-30 09:56 | 显示全部楼层
typedef struct TEST_S
{
        int a;
        int b;
        struct TEST_S *test;
}TEST_D;

typedef struct TEST_S
{
        int a;
        int b;
        struct TEST_S test;
}TEST_D;

typedef struct TEST_S
{
        int a;
        int b;
        TEST_D *test;
}TEST_D;

typedef struct TEST_S
{
        int a;
        int b;
        TEST_D test;
}TEST_D;


哪些是非法的?我对这些不太了解。
cxincye 发表于 2012-5-30 11:20 | 显示全部楼层
第三题也没看明白
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

114

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部