`
include0923
  • 浏览: 7418 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论
文章列表
    前面几篇文章一直在说关于未定义表达式求值顺序的问题,是时候做一点总结了,很多教材都建议在程序中尽量少用未定义的表达式,因为确定序列点确实是一件让人不爽的事,这里有 一些建议,或许能减少未定义表达式的出现频率。    1、确保一个表达式最多只修改一个对象:一个简单变量,一个数组成员、一个指针指向的位置。“修改”指的是诸如:=、+=、-=等赋值操作和++、--运算。   2、如果一个对象在一个表达式中出现一次以上而且在表达式中要被修改,则要确保对该对象的所有的读访问都被用于计算它的最终值,该条规则允许i=i+1合法 ...
    之前在笔试的时候遇到过这么一道题: 不使用中间变量交换两个变量的值。当时因为有两年多没看C语言了,居然木有做出来,果断被鄙视了,最近重新再学C,想到有这么一道题,就顺手解决它。基本上会有两种思路:1、从赋值想;2、异或逻辑运算符。     第一种,a+=b;b = a-b;a -=b;第一个表达式把a+b赋给a ,相当于a = a+b;此时a 的值为a+b,第二个表达式将a-b的值赋给b,此时b的值为a,而第三个表达式则将a-b的值赋给a,此时a的值为b。    第二种,考虑到a^a = 0,则可以这样来交换 ...
      在上一篇文章<由只北一样的表达式说开去>中提到了"序列点"和“未定义”这两个概念,而且好像有点难理解的样子,在这篇文章就理一下相关概念。      首先是"序列点 ":序列点是一个时间 ...
   好吧,表示被C语言的表达式语句坑的跟狗一样,或者是因为C那种松散的语言特性。这种特性有时候能带来更大的编程自由度,有时让人很无奈 。     有这么一个表达式:int i = 7;printf("%d\n",i++*i++);这个printf语句输出的结果是什么?49,擦,为毛不是56?自增运算符++,他的作用是使表达式的值自增1,i++与++i的区别在于:i++是表达式的值是原来i的值,做完运算之后i的值加1,而++i的值为i的值加1,做完运算之后i的值加1。那这样的话,不管从哪个顺序算这个表达式的值,似乎应该是56才对。在吉林大学康辉老师的讲解中:编译器在对 ...
从新学了一下C语言,发现每次看过C语言中的运算符之后,过一段时间便忘了各种运算符的优先级及结合顺序,每次都要翻书,各种苦逼,好吧,这次顺便整理一下。 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 () 圆括号 (表达式)/函数名(形参表)
1、final, finally, finalize的区别。 final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。  -------可用于变量、方法、类。finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行 ...
JavaSE ----基本语法、数据类型、操作符等:int、long、Integer、Long、if、else、for、while ----面向对象:class(类)、Object(对象)、instance(实例)、state(状态)、behavior(行为)、field、method、new、可见性(访问控制)、attribute、pro ...
简单工厂模式(simpleFactory),又叫做静态工厂方法模式,它定义一个具体的工厂类来负责创建一些类的实例,而这些被创建的类都应该有一个共同的父类,这样可以实现面向对象而不是面向具体编程。简单工厂类主要由3部分组成:工厂类、抽象类和实现抽象类的具体类。    简单工厂模式的原理结构图:    
Global site tag (gtag.js) - Google Analytics