易截截图软件、单文件、免安装、纯绿色、仅160KB

C/C++基础问题整理

这篇文章中记录本人对一些C/C++基础概念的理解,主要包括以下几个方面内容:
1、类型转换
1、类型转换
在C和C++的一个表达式中往往会包含几种不同的数据类型,要让这些数据类型之间可以进行运算,必须让他们之中的一些或全部进行类型转换,这种转换有两种形式,一种是编译器自动进行的,叫隐式类型转换,另一种是编程中强制执行的,叫强制类型转换。
1.1、隐式类型转换
1.1.1、例子
首先由两个例子来引出问题,分析下面两个例子的输出:
例一:
#include <stdio.h>
int main(int argc, char *argv[])
{
signed int a = -8;
unsigned int b = 4;
printf("%d\n", (a+b)/2);

return 0;
}
例二:
#include <stdio.h>
int main(int argc, char *argv[])
{
signed short a = -8;
unsigned short b = 4;
printf("%d\n", (a+b)/2);

return 0;
}
1.1.2、何时发生转换
1、在混合类型的表达式中,操作数要转换成相同类型。
2、用作条件的表达式需要转换成bool型。如if()、while()等。
3、初始化或赋值操作。
1.1.3、各种转换方式
1、算术转换:
算术转换最简单的是整形提升,对比int小的整数类型的操作数,如char,signed char, unsigned char, short, unsigned short,如果int能容纳下他们,这些数都转换为int进行运算,如果int不能容纳就转换为unsigned int,当int和unsigned int一起运算时,转换为unsigned int进行。当有其它数据类型的操作时,必须遵循一个原则就是在不丢失精度的前提下,用尽量少的位数表示。
2、指针转换:
3、与bool型有关的转换
4、与枚举有关的转换
5、与const有关的转换
6、由标准库类型定义的转换


相关文档:

C/C++文件操作

c/C++文件操作
软件开发   2009-03-12 16:22   阅读18   评论0  
字号: 大大  中中  小小
基于C的文件操作 
  在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。
一、流式文件操作
  这种方式的文件操作有一个 ......

C标准库函数abs的一个错误

 0x80000000,即–2147483648时,对它取负会产生上溢
VC.NET 7.1 提供的取绝对值函数(abs.c中)如下:
   int __cdecl abs ( int number)
   {
        return( number>=0 ? number : -number );
   }
   此函数实现得非常简单,乍看之下无任何毛病,可是仔细琢磨琢磨 ......

编写C/C++头文件

头文件一般由三部分内容组成:(1)头文件开头处的版权和版本声明;(2)预处理块;(3)函数和类结构声明等。
头文件扩展名为*.h。
为避免出现重复定义的问题 ,头文件一般写法如下:
/*----------------------------------------------------
MATH.H
-------------------------------------------------------*/
#ifndef& ......

第一次试着在Linux下写C程序

今天第一次试着在Linux下写C程序,把遇到的问题记录一下
1. 使用emacs命令编辑程序文件,我直接在Terminal里输入了emacs,写好程序,关闭,结果和windows里不一样,并没有任何SaveFileDialog之类的对话框弹出来,自己写的东西也不知道保存到哪里了,而且File菜单里也没有New这样的选项。后来才知道,原来是得在emacs命令后 ......

在CDHTMLDialog中用JavaScript调用C++函数

在类的构造函数中添加
EnableAutomation(); 
在OnInitDialog中添加
SetExternalDispatch(GetIDispatch(TRUE)); 
在类的声明中添加宏
DECLARE_DISPATCH_MAP() 
在类的实现文件中添加组宏
BEGIN_DISPATCH_MAP(当前类, 基类)
END_DISPATCH_MAP() 
然后就可以用 DISP_FUNCTION宏来映射导出函 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号