免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: pmerofc
打印 上一主题 下一主题

[C] 以其昏昏,使人昭昭? [复制链接]

论坛徽章:
0
3851 [报告]
发表于 2013-07-17 17:47 |只看该作者
pmerofc 发表于 2010-05-03 18:42
p2,《C程序设计》(第三版),谭浩强 著,清华大学出版社,2005年7月第3版,2009年10月第26次印刷

ISO啥 ...


这个应该没有错,楼主可以去ISO管网看看,
他们自己网站上就是这么写的。ISO - International Organization for Standardization

论坛徽章:
0
3852 [报告]
发表于 2013-07-17 17:52 |只看该作者
starwing83 发表于 2010-05-03 20:30
为啥IOS要缩写为ISO?好看么= =


汗,这个这不是为了好看
今天才看到这个帖子的路过

论坛徽章:
0
3853 [报告]
发表于 2013-07-19 14:09 |只看该作者
pmerofc 发表于 2012-02-06 22:15
——谭浩强 ,《C程序设计(第四版)学习辅导》,清华大学出版社,2010年7月,p192

程序质量不高不可能是 ...

程序质量不高不可能是因为“善于利用预处理命令”,这句话没看懂

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
3854 [报告]
发表于 2013-07-19 15:00 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3855 [报告]
发表于 2013-09-13 09:46 |只看该作者
本帖最后由 rosettasky 于 2013-09-13 09:47 编辑

楼主你好,能帮我解决一个问题吧,找了好久了。


ARM平台。
以下代码中    ctx->blobs[0] = blob; 结构体blob的值无法正确赋值给ctx->blobs[0]。
结构体作为函数参数时传值的,那应该没有任何问题。更奇怪的是我在asn1_init函数里加了那条printf,就可以神奇的变好。
为什么会这样呢?谢谢。
  1. void asn1_init(asn1_ctx_t * ctx, chunk_t blob, u_int level0, int implicit, u_int cond)
  2. {
  3. //printf("in fuc:%s, blob->len:%d\n", __func__, blob.len);
  4.         ctx->blobs[0] = blob;
  5.         ctx->level0 = level0;
  6.         ctx->implicit = implicit;
  7.         ctx->cond = cond;
  8.         memset(ctx->loopAddr, '\0', sizeof(ctx->loopAddr));
  9. }
  10. struct chunk {
  11.         unsigned char *ptr;
  12.         unsigned int  len;
  13. };

  14. typedef struct chunk chunk_t;

  15. #define ASN1_MAX_LEVEL  10


  16. typedef struct {
  17.         int implicit;
  18.         u_int cond;
  19.         u_int level0;
  20.         u_int loopAddr[ASN1_MAX_LEVEL + 1];
  21.         chunk_t blobs[ASN1_MAX_LEVEL + 2];
  22. } asn1_ctx_t;
复制代码

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
3856 [报告]
发表于 2013-09-14 13:18 |只看该作者
感恩。支持。
普及了C语言编程入门的教育。
确实起到了很大作用。
谢谢!

论坛徽章:
0
3857 [报告]
发表于 2013-09-25 20:41 |只看该作者
本帖最后由 Ritzberry 于 2013-09-26 09:48 编辑
pmerofc 发表于 2010-04-06 20:47
(一位热心的朋友为方便大家阅读,根据本帖整理了一份《谭浩强《C程序设计》(第四版)错误之不完全汇集》。 ...


我只想说,写的是很详细,很多也是对的,但是很多也太扯淡了吧,随便看了开始几个,列出来打打脸:

1、
一开始说int main,还有后面茫茫多int main
==评:
==C99并没有要求main函数的类型一律指定为int型
==main函数的类型一律指定为int型其实是C89要求的

有没有看过c99就来胡扯,ANSI C和非严格标准的编译器才支持void main。原文给你们:

The function called at program startup is named main. The implementation declares no
prototype for this function. It shall be defined with a return type of int and with no
parameters:
int main(void) { /* ... */ }
or with two parameters (referred to here as argc and argv, though any names may be
used, as they are local to the function in which they are declared):
int main(int argc, char *argv[]) { /* ... */ }
or equivalent;or in some other implementation-defined manner.

另一个例证 http://www.stroustrup.com/bs_faq2.html#void-main
Can I write "void main()"?
The definition
        void main() { /* ... */ }
is not and never has been C++, nor has it even been C. 注意时态

2、
LD的问题,LD=LOAD,谁告诉你一定是赋值了,本科没开过计算机组成的课么
举个例子,a=b+c,在RISC处理器里,b和c只要不是寄存器变量或者常量(常量的话一般都就优化掉了),都要用到ld
原文虽然不是最合理,但比这个纠正更合理多了

=====================
下面这个我的。。。
lin5161678 发表于 2013-09-26 09:30
回复 3857# Ritzberry

这一段 之前讨论过了

3、
勘误文件的第38页最后,
==评:写了“return 0;”居然还可能得到“一个非0的整数”?太神奇了吧

这个怎么说呢,OS相关的事情也不好说,不是所有异常处理返回值都一样,,
不过这里说的”太神奇“其实也不神奇。给你们个例子自己看去吧,
至少在PC的主流的OS上没问题,但是实模式下运气好这个还能正常退出的:

int main(){int*p=0;*p=1;return 0;}
编译出a.out为例
perl –e ‘print system(“./a.out”)’
看看输出


后面懒的看了,不过里面对的居多。


论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
3858 [报告]
发表于 2013-09-26 08:14 |只看该作者
我来Up一下!

论坛徽章:
1
摩羯座
日期:2013-12-19 10:04:07
3859 [报告]
发表于 2013-09-26 09:30 |只看该作者
回复 3857# Ritzberry

勘误文件的第38页最后,
==评:写了“return 0;”居然还可能得到“一个非0的整数”?太神奇了吧
   
这一段 之前讨论过了
main函数里面 只写了一个return 0; 那么main函数的返回值就只能是 0

你说的 情况 是进程返回值非0
和函数 main 的返回值没什么关系

论坛徽章:
0
3860 [报告]
发表于 2013-09-26 09:44 |只看该作者
甚是= = 我的。。。回复 3859# lin5161678


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

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP