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. jsp中JavaBean的用法

    UserRegisterBean.java:这是JavaBean package JavaBean; public class UserRegisterBean { private String us ...

  2. 【模拟题(电子科大MaxKU)】解题报告【树形问题】【矩阵乘法】【快速幂】【数论】

    目录: 1:一道简单题[树形问题](Bzoj 1827 奶牛大集会) 2:一道更简单题[矩阵乘法][快速幂] 3:最简单题[技巧] 话说这些题目的名字也是够了.... 题目: 1.一道简单题 时间1s ...

  3. Linux - gcc和g++的区别

    一般linux系统都自带了gcc编译器的,你可以用你的安装光盘去安装,如果你是觉得自带的gcc版本太低了,可以去gcc的官方网站可以下载到,编译需要很长的时间,如果你只编译C或者C++可以只下载gcc ...

  4. 浏览器Firefox新标签页默认打开地址设置

    1.地址栏输入about:config 2.找到browser.newtab.url 修改它的值为你想要的地址,如:https://www.baidu.com

  5. 【转】 linux 安装nginx及编译参数详解

    版权声明:本文为博主原创文章,未经博主允许不得转载. 从官网下载一个nginx 的tar.gz 版. 安装方式使用make 安装 第一步:解压 tar -zxvf  nginx-1.7.4.tar.g ...

  6. centos虚拟机,环境配置

    yum安装 yum -y install 包名(支持*) :自动选择y,全自动yum install 包名(支持*) :手动选择y or n 1.安装vim Centos默认自带VI,功能没VIM丰富 ...

  7. dom对象操作Html,Css

    HTML: 1.不要再文档加载完使用document.write,这样会创建新的dom对象,原来的元素将被覆盖. 2.获取元素,通过getElementbyID; getElementbyTag(&q ...

  8. hdu 2037

    PS:   - -原本想的是排序开始时间和消耗时间..后来想到可以排序结束时间..后来还wa了一次,因为排序的时候溢出了 思路: 1 3 //13 4 //20 7 3 8 2 9 5 10 //36 ...

  9. C++中的::operator new, ::operator delete

    一般在使用new  和 delete的时候,做了两件事情,一是空间的配置( new 是分配,delete是回收),而是调用对象的析构函数 但是也有办法将这两个过程分开 那就是显式的调用::operat ...

  10. UITableView全面解析,讲的好详细

    --UIKit之UITableView 概述 在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似于微信.QQ.新浪微博等软件基本上随处都是U ...