C# 语言规范--1.5 表达式

规范

C# 包含一元运算符、二元运算符和一个三元运算符。下表概述了这些运算符,并将它们按优先级以从高到低的顺序列出:

   章节 类别 运算符

   第 7.5 节  基本 x.y  f(x)  a[x]  x++  x--  new

typeof  checked  unchecked

   第 7.6 节 一元 +  -  !  ~  ++x  --x  (T)x

   第 7.7 节 乘法 *  /  %

   第 7.7 节 加法 +  -

   第 7.8 节 移位 <<  >>

   第 7.9 节 关系和类型检测 <  >  <=  >=  is  as

   第 7.9 节 相等 ==  !=

   第 7.10 节 逻辑 AND &

   第 7.10 节 逻辑 XOR ^

   第 7.10 节 逻辑 OR |

   第 7.11 节 条件 AND &&

   第 7.11 节 条件 OR ||

   第 7.12 节 条件 ?:

   第 7.13 节 赋值 =  *=  /=  %=  +=  -=  <<=  >>=  &=  ^=  |=

   当表达式包含多个运算符时,运算符的优先级控制各运算符的计算顺序。例如,表达式 x + y * z 按 x + (y * z) 计算,因为 * 运算符具有的优先级比 + 运算符高。

   当操作数出现在具有相同优先级的两个运算符之间时,运算符的顺序关联性控制运算的执行顺序:

   除了赋值运算符外,所有的二元运算符都向左顺序关联,意思是从左向右执行运算。例如,x + y + z 按 (x + y) + z 计算。

   赋值运算符和条件运算符 (?:) 向右顺序关联,意思是从右向左执行运算。例如,x = y = z 按 x = (y = z) 计算。

  优先级和顺序关联性都可以用括号控制。例如,x + y * z 先将 y 乘以 z 然后将结果与 x 相加,而 (x + y) * z 先将 x 与 y 相加,然后再将结果乘以 z。

时间: 2024-09-20 01:08:39

C# 语言规范--1.5 表达式的相关文章

《Groovy语言规范》-语法

原文链接  译者:王山山 语法 本章节涵盖了Groovy编程语言的语法.Groovy语言的语法源自Java语法,为Groovy增强了特定构造,允许一定程度上的简化语法. 1.注释 1.1.单行注释 单行注释以//开始,在一行中任何位置都可以被发现.//后面的字符,直到一行的末尾都是注释的一部分. // a standalone single line comment println "hello" // a comment till the end of the line 1.2.多行

《Groovy语言规范》-语法(一)

语法 本章节涵盖了Groovy编程语言的语法.Groovy语言的语法源自Java语法,为Groovy增强了特定构造,允许一定程度上的简化语法. 1.注释 1.1.单行注释 单行注释以//开始,在一行中任何位置都可以被发现.//后面的字符,直到一行的末尾都是注释的一部分. // a standalone single line comment println "hello" // a comment till the end of the line 1.2.多行注释 一个多行注释以/*开

JAVA语言规范:线程和锁

JAVA语言规范:线程和锁 概述: 前面章节的大多数讨论,都是关于通过单线程一次执行单个语句或者表达式.而JAVA虚拟机可以支持多线程同时执行.这些线程可以独立执行代码操作,而操作后所产生的值会保留在共享内存当中.单处理器和多处理器都能支持多线程,它们都是通过分配CPU时间片来执行代码. 线程由Thread类表示.用户创建线程的唯一方式是创建此类的一个对象:每个线程和这样的一个对象相关.当在相应的Thread对象上调用start()方法是,一个线程将启动. 线程的行为,特别是当不正确同步时,容易

c语言里面的关系表达式

问题描述 c语言里面的关系表达式 x=y=5; t=--x|| --y; 后,y的值是.t的值是 为什么? 解决方案 y=5t=1主要知道2点1.运算符优先级,赋值=号优先级比||低,所以先计算--x|| --y,再把结果0或1给t2.短路问题--x|| --y中--x是4,非0及真,后面的--y就不执行了. 解决方案二: y-4,t-4,都是减过1 解决方案三: 减号在前,是先进行减操作,减号在后相反 解决方案四: y=5 t=4 先做--x得 x=4 或判断左侧为真,不继续右边运算 解决方案

分清“语言/规范”以及“平台/实现”,以及跨平台.NET开发

在许多年前,"语言"就等同于"平台",例如C,C++以及最早的Ruby和Python等等.但是随着技术发展,出现了一些通用的平台,例如.NET和Java,逐渐这些平台上的语言也越来越多.再后来,某些语言在不同平台上的实现也越来越多,事情也变得有些复杂.技术在发展,但是从目前社区的讨论中,我发现许多朋友的观念还没有跟上.简单地说,如今的观念,一定要从"语言即平台"切换成"语言及平台",当分清"语言"和&quo

代码-用C语言实现求前缀表达式的值

问题描述 用C语言实现求前缀表达式的值 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 算术表达式有前缀表示法.中缀表示法和后缀表示法等形式.前缀表达式指二元运算符位于两个运算数之前,例如2+3*(7-4)+8/4的前缀表达式是:+ + 2 * 3 - 7 4 / 8 4.请设计程序计算前缀表达式的结果值. 输入格式说明: 输入在一行内给出不超过30个字符的前缀表达式,只包含+.-.*.以及运算数,不同对象(运算数.运算符号)之间以空格

class-C语言数组元素的表达式问题

问题描述 C语言数组元素的表达式问题 1. 若有定义int w[3][5];则以下不能正确表示该数组元素的表达式是: (A)*(&w[0][0]+1) (B)*(*W+3) (C)*(*(W+1)) (D)*(W+1)[4] ====参考答案是D,求大侠指教为何呢?*(W+1)[4]等价于w[1][4]元素吧?个人觉得(C)*(*(W+1))-这个有问题吧?? 2.设有以下说明和语句:inta[3][4],(*p)[4];p=a;则与表达式*(*p+2)等价的选项是: (A)a[0][2]__

JAVA语言规范-线程和锁章节之同步、等待和通知

原文链接  本文是Oracle官方<Java语言规范>的译文 JAVA语言规范:线程和锁 1 同步 JAVA编程语言提供了线程间通信的多种机制.这些方法中最基本的是同步化,此方法是使用监视器实现的.JAVA中每个对象与一个监视器相关联,一个线程可以加锁和解锁监视器.一次仅有一个线程可能在监视器上持有锁.尝试锁住该监视器的任何其他线程被阻塞,直到它们可以再该监视器上获得一个锁.线程t可以多次锁住特别的监视器:每个解锁将一个加锁操作的作用反转来了. synchronized语句计算了一个对象的引用

Facebook 推出 PHP 语言规范草案

PHP是最广泛使用的脚本语言之一,被数以千万计的网站使用,但直到现在它才有一个正式的语言规范.Facebook工程师和PHP核心开发者 Sara Golemon在上月初举行的OSCON会议上宣布了制定正式规格的计划,现在规格的草案已经发布在Github上. Facebook网站主要是基于PHP语言,过去几年Facebook向PHP贡献了许多开源项目,如虚拟机HHVM,翻译器HPHPc. 传送门(GitHub):https://github.com/php/php-langspec/blob/ma