| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 12107 人关注过本帖, 2 人收藏
标题:哥出几个 c 语言 基础题, 测测你可能过 2 级
只看楼主 加入收藏
mikelr
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:161
注 册:2010-3-17
收藏
得分:0 
我把第八题更正了, 你试试

(8)下面这段代码会不会造成 死循环, 为什么?
for (int i = -100; i < 100; i--)
{
    ;
}

会选成死循环,因为i的初始值 -100; i < 100 条件成立,接着i--,那么就会变成-101,永远小于 100.
2010-03-19 15:46
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 31楼 mikelr
哈哈, 第(8) 题错了

我就是真命天子,顺我者生,逆我者死!
2010-03-19 15:48
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
收藏
得分:0 
呵呵,答案是不会,哈哈,上当喽~
当i减到最小溢出时,i会变成最大的数
2010-03-19 15:52
mikelr
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:161
注 册:2010-3-17
收藏
得分:0 
恩。答错了。会溢出
2010-03-19 15:59
wangjianhui
Rank: 8Rank: 8
来 自:^帅帅城^
等 级:蝙蝠侠
威 望:2
帖 子:353
专家分:745
注 册:2010-3-19
收藏
得分:0 
哈哈

加油
2010-03-19 21:12
love_myself
Rank: 1
等 级:新手上路
帖 子:12
专家分:2
注 册:2010-3-17
收藏
得分:0 
回复 31楼 mikelr
-32768 再减1的话  是变成32767 还是1啊?    int 型
2010-03-20 02:36
邶风
Rank: 5Rank: 5
等 级:职业侠客
帖 子:287
专家分:335
注 册:2009-1-20
收藏
得分:0 
显然

for (int i = -100; i < 100; i--)
{
    ;
}
按理说I会一直递减下去,直到它的值溢出了~~~
32位机的ECX的值如果带符号的话 应该是运算到-2^31附近 然后程序就会自动跳出循环
i<100可能只是干扰用的?

#include
2010-03-20 07:47
ricki_py
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-3-8
收藏
得分:0 
1: 8
2: 4
3: #define TRUE  1
    #define FALSE 0
    bool fun(int a)
    {
        if(a & 4)
            return TRUE;
        return FALSE;
    }
8:是死循环!
2010-03-20 11:28
luyaohui
Rank: 1
来 自:浙江宁波
等 级:新手上路
帖 子:19
专家分:1
注 册:2010-3-20
收藏
得分:0 
第一天 来这里 希望大家多指导知道哈

哥编的不是程序,是寂寞!
2010-03-20 11:43
zhddragon
Rank: 5Rank: 5
等 级:职业侠客
帖 子:208
专家分:346
注 册:2009-5-14
收藏
得分:0 
以下是引用mikelr在2010-3-19 10:27:25的发言:

#include <stdio.h>

struct blue
{
    int    i;
    char   c;
    char   e;

}guy;

int main(void)
{
    printf("%d",sizeof(guy));

    return 0;
}


为什么结果还是8 而不是 4 + 4 + sizeof(int) 12呢?? ...
int i 的大小是4字节,而char的大小是1字节,也就是int的相对起始地址是4对齐,而char是1对齐。所以是4+1+1=6,同时在windows系统中一般遵守struct结构大小为其最宽成员的倍数,在这int最宽为4字节,6不是4的倍数,所以结构被填充为8字节。

内存对齐与操作系统相关:
windows要求基本数据类型以其大小的倍数对齐,double必须以8的倍数对齐,struct的大小为其最宽成员的倍数
linux要求short类型2字节对齐,其他大于2字节的数据类型4字节对齐,struct的大小为4的倍数。

身体是玩命的本钱
2010-03-20 17:10
快速回复:哥出几个 c 语言 基础题, 测测你可能过 2 级
数据加载中...
 
   



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

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