多维数组的各个下标必须单独出现在一对方括号内,在什么条件下,下列这些代码段可以通过编译而不会产生任何警告信息。

int array[10][20];
...
i = array[3,4];

咋一看array[3,4] 不合法,实际上这是合法的,因为C语言里面这个是逗号表达式。

逗号运算符是二元运算符:

表达式1 , 表达式2

逗号运算符确保操作数被顺序地处理:先计算左边的操作数,再计算右边的操作数。右操作数的类型和值作为整个表达式的结果。左操作数只是为了副作用需要而被计算,它其值会被丢弃。

所以:3,4是逗号表达式,会抛弃左边的值,表达式结果为4,array[3,4]就是array[4],这是一个指向一维数组的指针,定义为int (*p)[20],

所以当i的类型是一个整形指针或者整形数组指针时编译正确不会有警告。

int32_t array[10][20];
int * i = array[3,4];
int (*p)[20] = array[3,4];
> p p
$1 = (int (*)[20]) 0x7fffffffe480> p &p
$2 = (int (**)[20]) 0x7fffffffe660> p i
$3 = (int *) 0x7fffffffe480> p &i
$5 = (int **) 0x7fffffffe668

所以当面对逗号表达式时需要特别小心。

C语言陷阱之逗号表达式相关推荐

  1. c语言赋值一个字母,c语言赋值后面有逗号 c语言赋值与逗号表达式问题

    C语言提供一种特殊放入运算符:逗号运算符 表达式1,表达式2 逗号表达式的分享解过程是: 先分享表达式1,再分享表达式2 整个逗号表达式的值是表达式2的值,如表达式"3+5,6+8" ...

  2. (C语言)关于逗号表达式

    一些特点 1.逗号表达式是C语言优先级最低的运算符. 2.逗号表达式是左结合性(即按从左到右顺序运算)的运算符. 常见表达式 //例一 #include<stdio.h> void mai ...

  3. c语言中有关逗号表达式

    #include <stdio.h> int main() { int a=1,b=4,c=6,x,y,y1; y=(x=a+b),b+c; y1=((x=a+b),(b+c)); pri ...

  4. C语言中的逗号表达式

    #include <stdio.h>int main() {int a = 1;int b = 5;int c = 3;int d = (a = b - c, b = a - c, c = ...

  5. C语言逗号运算符和逗号表达式

    在C语言中逗号","也是一种运算符,称为逗号运算符. 其功能是把两个表达式连接起来组成一个表达式, 称为逗号表达式.其一般形式为:表达式1,表达式2 其求值过程是分别求两个表达式的 ...

  6. 【C语言进阶深度学习记录】十四 C语言中 三目运算符和逗号表达式

    文章目录 1 三目运算符 1.1 三目运算符的返回类型的代码案例分析 2 逗号表达式 2.1 逗号表达式代码案例分析 2.2 如何用一行代码实现 strlen函数 3 总结 1 三目运算符 三目运算符 ...

  7. C语言逗号表达式 - C语言零基础入门教程

    目录 一.C 语言逗号表达式简介 1.逗号表达式书写形式 2.逗号表达式计算结果 二.C 语言逗号表达式实战 1.逗号表达式的使用 2.逗号表达式与赋值表达式区别 三.猜你喜欢 零基础 C/C++ 学 ...

  8. C语言:逗号表达式(辨析)

    逗号表达式:是C语言中的逗号运算符,优先级别最低,它将两个及其以上的式子联接起来,①从左往右逐个计算表达式,②整个表达式的值为最后一个表达式的值. --百度百科 如果令x的初始值为1的话,++x与x+ ...

  9. 【c】c语言中逗号运算符和逗号表达式

    刚开始学习C语言时,对逗号去处符和逗号表达式非常困惑,本文给了我很大的帮助. 来自:百度空间-软件工程师 C语言提供一种特殊的运算符--逗号运算符.用它将两个表达式连接起来.如: 3+5,6+8 称为 ...

最新文章

  1. Https单向认证和双向认证介绍
  2. oracle冷备份 代码,Oracle冷备份和恢复自动产生sql源代码
  3. 吴恩达 coursera AI 专项五第一课(上)总结+作业答案
  4. 侏罗纪显示服务器超时,侏罗纪世界进化服务器无法访问解决方案推荐
  5. 青春可长可短, 就看自己如何度过(亦或者如白驹过隙, 稍纵即逝 正所谓且行且珍惜)...
  6. 关于构造函数和this调用的思考
  7. leetcood学习笔记-2-两数相加
  8. 7-2 银行排队问题之单窗口“夹塞”版 (30 分)
  9. php+数组存放文件名_php将数组存储为文本文件的三种方法
  10. Python知识整理_1
  11. PHP获取汉字的拼音(支持首字母和全拼)
  12. MySQL数据库的完美卸载
  13. android和夜神模拟器哪个好,天天模拟器和夜神安卓模拟器哪个好 两者功能对比...
  14. java实现批量注册_Java写的批量域名注册查询程序
  15. 底层码农的Stanford梦 --- 从SCPD开始 [转]
  16. 网易有道的喜与忧:11亿营销费抢市场,与跟谁学之间还差一个有道
  17. WPS文档怎样转换为图片
  18. 关于成本核算方法、步骤、成本分析
  19. 框架流程图绘制工具OmniGraffle 7 for Mac
  20. 使用python selenium爬取淘宝商品信息 自动登录淘宝和爬取某一宝贝的主图,属性图和详情图等等

热门文章

  1. Java字节码的详细讲解-刘宇
  2. 1116学习记录 简单练车模型
  3. 现在陪玩多吗,用Python来看看他们的行情
  4. 数据结构算法专题—双指针
  5. 西安:食肉种族的最爱
  6. windows-PSPing
  7. 新建的亚马逊云服务器EC2 ping 不通 解决方案
  8. 谷歌安装postman教程 、插件下载
  9. ES6 Generator函数 深入应用
  10. Python实现随机数生成器