C语言学习的一些陷阱

发布者:MysticGlow最新更新时间:2014-01-10 来源: dqjsw关键字:C语言学习  赋值运算  字符串 手机看文章 扫描二维码
随时随地手机看文章
1、=和==的不同
在C语言中,符号==是作为赋值运算,符号==是作为比较的。一般而言,赋值运算比比较运算出现得更频繁,因此字符较少的符号=就被赋予了更常用的含义——赋值操作。赋值操作在平常更广泛被我们使用,这就导致了一个潜在的问题,程序员本意要做比较运算,却写成了赋值运算。
 
 
2、程序中的“/*”
当C编译器读入一个字符“/”之后又跟了一个字符“*”,那么编译器就必须做出判断:是将其作为两个分别的字符对待,还是合起来作为一个符号对待。不同的编译器对于“/*”会产生不同的影响。
例:要求写一个测试程序,无论是对允许嵌套注释的编译器,还是对不允许嵌套注释的编译器,该程序都能正常通过编译,但是这两种情况下程序执行的结果却不相同。
解:/*/*/0*/**/1这一行表达式,如果编译器允许嵌套注释的话,即可理解为:/*  /*  /0  */  *  */   1。两个/*和两个*/正好匹配,所以上式的值就是1.如果不允许嵌套注释的话,注释中的/*将被忽略。因此上面的表达式可以理解为:/*   /    */   0*  /*   */   1,他的值就是0*1。
 
 
3、字符和字符串
用单引号引起的一个字符实际上表示一个整数,例如‘a’的含义和0141(八进制)或者97(十进制)严格一致。
用双引号一起的是字符串,表示的是一个数组起始字符的指针,该数组末尾是以字符‘\0’结束的。
例:char *s=’/’是错误的。正确应该为char *s=”/”。
关键字:C语言学习  赋值运算  字符串 引用地址:C语言学习的一些陷阱

上一篇:单片机测交流电流
下一篇:单片机C语言的优越性

推荐阅读最新更新时间:2024-03-16 13:33

LPC2132学习中遇到的问题2
在使用ADS1.2编译程序的过程中,我们有函数如下定义: void PutStr(uint8 x, uint8 y, uint8* str); 我们在主函数中有这样的用法: PutStr(0, 0, Hello world! ); 经编译后,有如下错误: Error: C3028E implicit cast of pointer to non-equal pointer 解决方法如下: PutStr(0, 0, (uint8*) Hello world! ); 即将我们的字符串强制转换为我们在函数中所定义的形式。 PS: C3028E: implicit cast of pointer to non-
[单片机]
C语言字符串操作
本篇文章是对C语言字符串操作进行了详细的总结分析,需要的朋友参考下 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p) 取字符串长度 strcmp(p, p1) 比较字符串 strcasecmp忽略大小写比较字符串 strncmp(p, p1, n) 比较指定长度字符串 strchr(p, c) 在字符串中查找指定字符 strrchr(p, c) 在字符串中反向查找 strstr(p, p1) 查找字符串 strpbrk(p, p1) 以目标字符串的所有字
[单片机]
PIC16F877A串口发送字符串问题
PIC16F877A串口发送,查询方式,就为了调出这个费了我一天时间,原来是串口芯片电压问题,现总结如下: 1、注意232串口芯片供电电压,有5V和3.3V的 2、注意TXD、RXD接线,单片机的TXD接232芯片的R2OUT,单片机的RXD接232芯片的T2IN 3、注意ESP8266的UTXD接MCU的RX,URXD接MCU的TX 4、注意ESP8266的UTXD接232的T2IN,URXD接232的R2OUT 5、串口波特率设置成9600 6、注意连接线的可靠性,如果用线连的话一定要检查线和插座是否稳定连接 PIC16F877A串口发送 //以下是串口发送程序 #include #define ucharunsigned
[单片机]
汇编:统计字符串内各种字符的数目
;对这个题目进一步改造: ;3_7 用户输入一个由数字 0 ~ 9 英文大写字母 A ~ Z ;以及英文小写字母 a ~ z 组成的ASCII 字符串, ;字符串的结束符为 CR(即回车符,其ASCII 码为0DH),字符串总长度不超过256 个。 ;要求统计传送的字符总数以及其中各种字符的数目 DATA SEGMENT SUM DB 00H ;总数 计数器 CAPITAL DB 00h ;大写字母个数 计数器 small db 00h ;小写字母个数 计数器 num db 00h ;数字个数 计数器 result db 'The amout all of the zifu in thi
[单片机]
汇编:统计<font color='red'>字符串</font>内各种字符的数目
整数与字符串转换的C实现
即将就业,也复习复习相关的知识,看了看嵌入式C的笔试题,整体感觉考试题目还是蛮有意思的,考点都比较重要,而且比较细,主要还是设计到一些指针和数组已经函数指针等基本的概念。 比如: 如何实现两个值中的最大值:((a+b) + abs(a-b))/2 如何实现不依靠中间量实现两个变量值的交换: a = a + b; b = a - b; a = a - b; 或者 a = a^b; b = a^b; a = a^b; 其中后面的这种方式更加的优越。 sizeof与strlen的区别 其中sizeof是一个操作符,在编译过程中就能确定结果,但是strlen是一个函数,只有在运行的时候才能得到返回值。 指针、数组、函数等各种形式的指
[单片机]
stm32的串口接收字符串以十六进制数
#include pbdata.h uint8_t TxBuffer1 = USART Interrupt Example: This isUSART1 DEMO ; uint8_t RxBuffer1 ,rec_f,tx_flag; vola ti le uint8_t TxCounter1 = 0x00; volatile uint8_t RxCounter1 = 0x00; uint32_t Rec_Len; int main(void) { u8 a=0; RCC_Configuration(); NVIC_Configuration(); GPIO_Configuration();
[单片机]
单片机C语言程序设计:单片机向主机发送字符串
/* 名称:单片机向主机发送字符串 说明:单片机按一定的时间间隔向主机 发送字符串,发送内容在虚拟终端显示。 */ #include reg51.h #define uchar unsigned char #define uint unsigned int //延时 void DelayMS(uint ms) { uchar i; while(ms--) for(i=0;i 120;i++); } //向串口发送字符 void Putc_to_SerialPort(uchar c) { SBUF=c; while(TI==0); TI=0; } //向串口发送字符串 voi
[单片机]
单片机<font color='red'>C语言</font>程序设计:单片机向主机发送<font color='red'>字符串</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved