1.C语言的基本数据类型直接与底层硬件相对应。

2#define 是可能出现问题

1
2
3
4
5
#define a(y) a_ex(y)
a(x)被扩展为 a_ex(x)
 
#define a (y) a_ex(y)
a(x)被扩展为 (y) a_ex(y)(x)

#define宏的用法

1.简单宏定义

1
#define a y

将文件中的 a 全部换成 y

为了避免出现问题,要将宏展开,根据运算符的优先级判断是否是需要的运算顺序。

2.带参数的宏定义

1
2
#define a(y) a_ex(y)
a(x)被扩展为 a_ex(x)

#define a(y) a_ex(y) 中的a(y)的中间不能带空格否则成了简单的宏替换了

1
2
#define a (y) a_ex(y)
a(x)被扩展为 (y) a_ex(y)(x)

有空格,为简单的宏替换, a 换成 (y) a_ex(y)

a(x)替换后成了(y) a_ex(y)(x)

3.const

1
2
3
4
5
6
7
8
#include <stdio.h>
 
void main()
{
char *pa;
const char *pb;
pa=pb;
}
1
C:\Documents and Settings\CHEN\桌面\ff\main.c|7|warning: assignment discards 'const' qualifier from pointer target type [enabled by default]|
1
2
3
4
5
6
7
8
#include <stdio.h>
 
void main()
{
char *pa;
const char *pb;
pb=pa;
}

赋值合法

两操作数都是指向有限定符或无限定符的指针,则左边的指针所指向的类型必须具有右边所指向类型的全部限定符。

pa 为指向char 类型的指针,pb 是指向const char 类型的指针限定符为const

pa=pb 左边限定符为无,右边为const 不符合规则的。

pb=pa 左边限定符为const ,右边限定符为无,左边具有右边的全部限定符,故是符合规则的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
void main()
{
char *pa;
const char *pb;
char **pc;
const char **pd;
pb=pa;
 
pc=&(pa);
pd=&(pb);
pd=pc;
}

pc为指针,指针指向指针,指针指向char

pd为指针,指针指向指针,指针指向const char

pc pd 指向的均为没有限定符的指针,且该指针指向的类型不一样。

4.算术转换

整型升级

int char short  int型位段,,包括他们的有符号和无符号变型,以及枚举类型,在表达式中转化为 int 或 unsiged int

寻常算术转换

C专家编程学习 1的更多相关文章

  1. C语言学习书籍推荐《C专家编程Expert C Programming Deep C Secrets》下载

    Peter Van Der Linden (作者) <C和C++经典著作 C专家编程Expert C Programming Deep C Secrets>展示了C程序员所使用的编码技巧, ...

  2. c专家编程摘录

    C专家编程摘录 c操作符的优先级 有时一些c操作符有时并不会像你想象的那样工作. 下方表格将说明这个问题: 优先级问题 表达式 期望的情况 实际情况 . 优先级高于* *p.f (*p).f *(p. ...

  3. <<c专家编程>>笔记

    C专家编程摘录 c操作符的优先级 有时一些c操作符有时并不会像你想象的那样工作. 下方表格将说明这个问题: 优先级问题 表达式 期望的情况 实际情况 . 优先级高于* *p.f (*p).f *(p. ...

  4. linux编程学习

    linux编程学习 工具篇 “公欲善其事,必先利其器”.编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道, 下面列出学习 C 语言编程常常用到的软件和工具. (一)操作系 ...

  5. 现代3D图形编程学习-基础简介(3)-什么是opengl (译)

    本书系列 现代3D图形编程学习 OpenGL是什么 在我们编写openGL程序之前,我们首先需要知道什么是OpenGL. 将OpenGL作为一个API OpenGL 通常被认为是应用程序接口(API) ...

  6. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  7. 现代3D图形编程学习-基础简介(2) (译)

    本书系列 现代3D图形编程学习 基础简介(2) 图形和渲染 接下去的内容对渲染的过程进行粗略介绍.遇到的部分内容不是很明白也没有关系,在接下去的章节中,会被具体阐述. 你在电脑屏幕上看到的任何东西,包 ...

  8. 现代3D图形编程学习-基础简介(1) (译)

    本书系列 现代3D图形编程学习 基础简介 并不像本书的其他章节,这章内容没有相关的源代码或是项目.本章,我们将讨论向量,图形渲染理论,以及OpenGL. 向量 在阅读这本书的时候,你需要熟悉代数和几何 ...

  9. 现代3D图形编程学习-环境设置

    本书系列 现代3D图形编程学习 环境设置 由于本书中的例子,均是基于OpenGL实现的,因此你的工作环境需要能够运行OpenGL,为了读者能够更好的运行原文中的示例,此处简单地介绍了linux和win ...

随机推荐

  1. Java并发编程(二)线程任务的中断(interrupt)

    使用interrupt()中断线程 当一个线程运行时,另一个线程可以调用对应的Thread对象的interrupt()方法来中断它,该方法只是在目标线程中设置一个标志,表示它已经被中断,并立即返回. ...

  2. ScrollView中嵌入ListView,GridView冲突的解决(让ListView全显示出来)

    ScrollView中嵌入原生ListView或GridView,会出现ListView,GridView显示不全的问题. 解决方法:重新构造一个ListView或GridView,重写OnMeasu ...

  3. [转]shell基本算术运算

    from:http://www.cnblogs.com/yfanqiu/archive/2012/05/10/2494031.html#undefined shell程序中的操作默认都是字符串操作,在 ...

  4. maven的简单安装与配置

    什么是Maven? Maven可以被理解成"知识的积累",也可以被翻译为"专家".它是一个项目管理工具. 它的主要服务即源于java平台的项目构建.依赖管理和项 ...

  5. Unity开发Android应用程序:调用安卓应用程序功能

    开发环境: Eclipse3.4 + adt12 + jdk6 + AndroidSDK2.2 Unity3.4 + windows7 测试设备: HTC Desire HD 本文要涉及到的几个重点问 ...

  6. fdisk分区

    查看文件系统: # df -hFilesystem Size Used Avail Use% Mounted on/dev/sda1 20G 1.1G 18G 6% /tmpfs 1.9G 0 1.9 ...

  7. iframe和form表单的target应用简单例子

    iframe和form表单的target属性   Problem: 刷新主页面中的其中一个iframe,其他内容不变 Solution: main.jsp <body onload=" ...

  8. 黑马程序员——【Java基础】——Java语法基础

    ---------- android培训.java培训.期待与您交流! ---------- 一.关键字 1.定义和特点 定义:被Java语言赋予了特殊含义的单词. 特点:关键字中所有的字母都为小写. ...

  9. BZOJ 3163 Eden的新背包问题

    分治背包+单调队列优化. 但是为什么maxn要1w多?...不怎么懂. #include<iostream> #include<cstdio> #include<cstr ...

  10. Kylin上chromium不能用flash的解决命令

    sudo apt-get update sudo apt-get install pepperflashplugin-nonfree sudo update-pepperflashplugin-non ...