| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1615 人关注过本帖
标题:向大家求助
只看楼主 加入收藏
都都
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-7-3
收藏
 问题点数:0 回复次数:7 
向大家求助
在limits.h下数据类型没有int64的类型,下面是一个自己定义一个int64类型的程序,里面有些不懂的地方向大家请教。谢谢大家
#include <stdint.h>
#include <limits.h>

#if (UINT_MAX != 0xFFFF) //UINT_MAX的意思是unsigned 整形最大值的意思吗?这里做这个选择定义有什么意义?
 //#warning size of int != 16 bit
 #error size of int != 16 bit
#else
  #define TYPE_INT64
#endif

uint8_t  u8;
uint16_t u16;
uint32_t u32;

#ifdef TYPE_INT64
  uint64_t u64;
#endif


int main()
{
  volatile unsigned int s8, s16, s32, uintmax;//这里为什么用volatile定义

#ifdef TYPE_INT64
  volatile unsigned int s64;
#endif


  uintmax = UINT_MAX;//这里的UINT_MAX的值应该是多少呢?

  s8 = sizeof (u8);
  s16= sizeof (u16);
  s32= sizeof (u32);

#ifdef TYPE_INT64
  s64= sizeof (u64);
#endif
}

[[it] 本帖最后由 都都 于 2008-7-28 04:59 编辑 [/it]]
搜索更多相关主题的帖子: bit TYPE int MAX ifdef 
2008-07-28 04:57
xiaomengxia2008
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2008-7-23
收藏
得分:0 
2008-07-28 14:11
fxstudenting
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-7-28
收藏
得分:0 
这个问题我能帮你解答,去这个两博客其中的一个,把问题写到留言版上,我马上给你解答。
http://dlstudenting.
http://fxstudenting.blog.
2008-07-28 16:57
都都
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-7-3
收藏
得分:0 
另外,大家谁知道,
void *和char*是什么数据类型
2008-07-29 02:17
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
LZ:16位编译器么?
提醒你,16位编译器是不提供64位int支持,建议你换用32位编译器。
而且16位编译器不适合进行大规模的数字的运算。(因为64K内存分页)

还有,你并没有“实现”一个64位整数,如果真的想实现int64,应该这样
typedef struct _int64_t
{
    int32_t low,high;
} int64_t;

还要提醒你,UINT_MAX定义自limits.h,而intXX_t一系列类型是定义自stdint.h的。

从PFAN偷来的一段陈述:
1、TC不是标准。
应该承认,TC比较符合C89标准(上面那个例子算是例外)。但对于C99,TC力不从心。变长数组、复数支持、新的restrict等关键字,新的stdint.h等头文件,这些在TC中都没有看到。甚至,main函数不写return 0;还会有警告。
至于TC3.0,号称支持C++,但它甚至还不支持模版,这样的C++在今天看来已经不是C++了。同它开发C++工程更是个大笑话。

2、TC生成的代码效率不高。
大家知道TC生成的应用程序都运行于80x86平台,但如今的事实就是80x86正在进入64位时代。在TC中,一个double类型变量的赋值就要四条指令,一个16位整数的乘法就要占用两个寄存器(AX和DX),但在64位计算机上,以上动作都只需要一条指令。
另外,TC是基于单任务机制的,举个很简单的例子,如果我调用getch函数,则CPU会一直不停的检测键盘是否被按下,造成CPU时间的大量浪费。如果这个时候你还在用flashget下载,对不起,等我按完键盘再说。而现在的编译器大多都采用消息机制(通过操作系统实现),不存在以上问题。
至于语句优化,有一个很自然的事实:新一代的编译器会采用以前编译器所采用的各种优化手段,除非那样的手段并不合适。如果你不相信GCC或者VC比TC好,那么同为Borland出品的C++ Builder,总不会比它的先辈TC差吧?
手下见真章,大家把自己写的程序在TC和Dev-C++下分别运行,就知道效率的区别所在了。

3、TC生成的代码小是事实,但这个优势实在不明显。
以下面这个简单程序为例:
#include<stdio.h>
int main(void)
{
    printf("Hello,World.\n");
    getchar();
    return 0;
}
TC编译连接,生成exe文件大小为9.45k。
Dev-C++编译连接,生成exe文件大小为16k。
请注意,TC程序总共可使用的空间只有1M,也就是说,1%的内存都被用来存放程序代码了。而Dev-C++在Windows平台,16k的大小完全可以接受。

4、TC的编辑环境不利于快速输入代码。
如果你用了VC,你会发现在输入一个函数名后打个括号,其参数信息就被显示出来了。如果你用了VS 2005中的C#代码编辑工具,你会发现一个变量名字只写一半,后一部分就被自动填出;该编辑器甚至还可以自动对齐格式。以上种种,有利于代码的快速输入,但TC呢?除了一个自动缩进,几乎就没有其他手段了。

5、TC稳定性不够好。
如果你在写程序的时候不小心乱用了指针,则当你把程序改到正确的时候,再运行,有可能仍然得不到正确结果,只有重新启动TC才能解决问题。你甚至可以通过指针把TC搞崩溃。并且当你再次进入TC时,以前的某些设置莫名其妙的被复原了。但在现代的编译器中,这样的问题非常少见。

6、TC并不是一无是处。
TC的帮助文档写得很规范,查询方便。编译速度和调试功能也很不错,但总的来说,这些优点总不足以弥补它其他方面的巨大不足。

结论:很明显,TC不是最好的编译器。
 
取自:http://www.

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-07-29 08:26
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
PS:上面的说法,是针对TC的IDE而言的,其实我个人不反对用TC的编译器加上别的编辑器……不过即使这样优势仍然不明显……

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-07-29 08:27
lingluoz
Rank: 2
来 自:苏州科技学院
等 级:新手上路
威 望:4
帖 子:749
专家分:0
注 册:2008-2-2
收藏
得分:0 
vs2008好了既免費又最新

Murphy's Law :
If there are two or more ways to do something, and one of those ways can result in a catastrophe, then someone will do it.
2008-07-29 08:48
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
没说编译器的事儿,只是建议LZ用32位编译器而已。

话说,VS2008不免费,而且价格很贵(好像也要个几千块钱吧),免费的是VS2008 Express。当然如果你像我一样用盗版那就没什么好说的了,嘿嘿

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-07-29 11:17
快速回复:向大家求助
数据加载中...
 
   



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

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