c-这个运算顺序是怎么样的,*和++是同一优先级的吧,而且是右结合

问题描述

这个运算顺序是怎么样的,*和++是同一优先级的吧,而且是右结合

解决方案

返回的是自增以前的值,然后指针自增。
相当于
p->str ...
p = p++;

解决方案二:

结合你昨天的问题来说,写程序的根本价值是让人理解程序,或者用人理解的方式写程序。因此并不是说,编译器能编译通过的代码,就是没问题的代码。
这种写代码所需要的准则如同交通规则,虽然看不见,但是确实存在。你不能因为汽车可以闯红灯就认为闯红灯是正常的。
编写含义模糊含混的代码,搞得“没有思路”,再画什么流程图,这不是很搞笑么

解决方案三:

有什么问题吗?
先进行++,只不过+1是运行指针以后进行的

解决方案四:

盆友 这种问题其实没有必要 因为真正编程的时候不会出现这种代码 可读性太差了
而且这种情况是由于优先级产生的 而优先级又是哪里来的呢 ?一部分 C标准有定义 还有就是实现的时候编译器的问题了
程序员的生命是如此的珍贵 在这个波澜壮阔的时代 更要把光阴用在有价值的地方 别钻牛角尖

解决方案五:

相当于:

*(p->str);
p++;

p++是先用后加,++p是先加后用。

时间: 2024-10-23 01:03:52

c-这个运算顺序是怎么样的,*和++是同一优先级的吧,而且是右结合的相关文章

++的运算顺序是从右向左的,像++a,是a加一,如果的a++,++的右边没东西,怎么运算呢

问题描述 ++的运算顺序是从右向左的,像++a,是a加一,如果的a++,++的右边没东西,怎么运算呢 ++的运算顺序是从右向左的,像++a,是a加一,如果的a++,++的右边没东西,怎么运算呢 解决方案 前加加和后加加的区别,不同的编译器也会有差异,前置是先改变值,在做后面的运算,后置的相反,如果后置的后面没东西,那就是 a=a+1 解决方案二: 这个可以看看编译器对应的会编代码的,a=1,++a相当于2,a++还是1 解决方案三: 这个是有解释器来处理的 解决方案四: ++ 运算是自增的意思,

c语言-n+=m++的运算顺序是什么?

问题描述 n+=m++的运算顺序是什么? 如题目啦 n+=m++的运算顺序是什么?不是++优先级高点吗? 解决方案 以上语句等价于 n += m; m ++; 如果是n += ++m;的话,则等价于 m ++; n += m; 解决方案二: 先解释一下 += 和 ++ 是什么意思: += 的意思是 左值和右值相加结果赋值给左值,如 a=1;b=2;a+=b;后,等效于a=a+b ,结果a=3;b=2. ++ 的意思是变量自加1,如a=1;a++;a的值是2, 在c中,++有前置和后置如 ++a;

关于函数指针调用,运算顺序

问题描述 关于函数指针调用,运算顺序 x=*MyFun(int a) 与 x=(*MyFun)(int a) 有区别吗后面那个(*MyFun)一定要扩一起吗,扩一起是为了改变运算顺序吧,但是作为一个函数名这个运算顺序怎么算呢?定义的时候和后面定义的时候是不是又不太一样了, 顺便再问一下,有必要把那么多运算符的运算顺序都记下来吗 解决方案 前面和后面的结果有的时候可能一样,=也可能一样,看你的理解 解决方案二: 前面和后面的结果有的时候可能一样,=也可能一样,看你的理解 解决方案三: 前面和后面的

运算符 优先级-运算顺序问题。。。。。

问题描述 运算顺序问题..... b*=n--的运算顺序是啥,先算的什么................... 解决方案 b*=n--翻译过来是:b = b* n--,先乘再递减 解决方案二: --在后面所有先运行赋值再运行--,假设--在前面就是先运行-- 解决方案三: 可以分成以下两个部分: b=b*n: n=n-1: 所以顺序也就是这个了, -- 操作一般最后做的 解决方案四: n--是先使用n现有的值,等所在语句其他操作执行完后才把n的值减1. b*=n-- 相当于b=b*(n--) 相

C语言中6组指针和自增运算符结合方式的运算顺序问题_C 语言

在C语言中,当指针运算符和++或者–结合时很容易分不清运算顺序,在这里总结一下,下面一共分析6中组合: * p++,(* p)++,* (p++),++* p,++( * p), * (++p). 先看段代码以及输出: #include<stdio.h> int main() { int a[3]={1,3,5}; int *p=a; printf("----------------1----------------\n"); printf("%d\n"

c++-关于三目表达式问题,运算顺序的问题

问题描述 关于三目表达式问题,运算顺序的问题 #include void main() { int a=1, b=2, c=3; cout<<(a coutb ? b-- : ++a)< coutb ? ++a : ++b)< coutb ? a : b>c ? b : c)<<endl; } 给出这一段代码,第一行和第二行输出为1和2我能理解,但是为什么第三行输出为6?还有第四行为什么也是6? 求大神指点一二,小弟在此谢过! 解决方案 第一行cout之后,输出1

java语法问题,运算顺序

问题描述 java语法问题,运算顺序 new A( ).B( ) 运算顺序是如何的 如何理解这种运算顺序 java中的.号是从属关系 方法的方法是A( ).B( ) 对象的方法 类的方法 对象的对象都可以用.号连接吗 解决方案 你这不是A对象里的方法吗 解决方案二: java中double运算的问题Java的移位(>>和>>>)运算问题java 大数字运算结果的显示问题

VB与Excel在乘幂运算时的结果差异及其不合理性

excel|运算 东北林业大学环境科学系 隋祥引言表达式解析是编程工具与电子表格等软件最基本的功能之一,不同的软件在解析表达式时都遵循一定的运算规则,在不同软件中,这些运算规则略有差异,导致计算结果也不同.笔者在实践中发现,VB与Excel在处理"连续乘幂"这一常见运算时,所遵循的法则有着较大的出入,而且都存在着不合理的因素.本文试图通过论述得到一种更为合理的运算模式,并为编写表达式解析类过程提供指导. 问题分析下表列出了VB6.0与Excel2003在处理同一个关于乘方运算的表达式时

[C++ 面试基础知识总结] 顺序容器

[C++ 面试基础知识总结] 顺序容器 参考书籍:<C++ Primer> 目录 C 面试基础知识总结 顺序容器 目录 顺序容器与选择 迭代器 容器的初始化和赋值 顺序容器操作 添加元素 访问元素 删除元素 改变容器大小 迭代器失效 vector对象的增长 string 操作 改变string 搜索string 数值转换 容器适配器 栈stack 队列queue 顺序容器与选择 顺序容器类型: vector 可变大小数组 deque 双端队列 list 双向链表 forward_list 单向