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++文件操作
软件开发 2009-03-12 16:22 阅读18 评论0
字号: 大大 中中 小小
基于C的文件操作
在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。
一、流式文件操作
这种方式的文件操作有一个 ......
0x80000000,即–2147483648时,对它取负会产生上溢
VC.NET 7.1 提供的取绝对值函数(abs.c中)如下:
int __cdecl abs ( int number)
{
return( number>=0 ? number : -number );
}
此函数实现得非常简单,乍看之下无任何毛病,可是仔细琢磨琢磨 ......
头文件一般由三部分内容组成:(1)头文件开头处的版权和版本声明;(2)预处理块;(3)函数和类结构声明等。
头文件扩展名为*.h。
为避免出现重复定义的问题 ,头文件一般写法如下:
/*----------------------------------------------------
MATH.H
-------------------------------------------------------*/
#ifndef& ......
今天第一次试着在Linux下写C程序,把遇到的问题记录一下
1. 使用emacs命令编辑程序文件,我直接在Terminal里输入了emacs,写好程序,关闭,结果和windows里不一样,并没有任何SaveFileDialog之类的对话框弹出来,自己写的东西也不知道保存到哪里了,而且File菜单里也没有New这样的选项。后来才知道,原来是得在emacs命令后 ......
在类的构造函数中添加
EnableAutomation();
在OnInitDialog中添加
SetExternalDispatch(GetIDispatch(TRUE));
在类的声明中添加宏
DECLARE_DISPATCH_MAP()
在类的实现文件中添加组宏
BEGIN_DISPATCH_MAP(当前类, 基类)
END_DISPATCH_MAP()
然后就可以用 DISP_FUNCTION宏来映射导出函 ......