- 浏览: 91229 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (91)
- 测试 (0)
- 其他 (0)
- cms (3)
- 配置apache虚拟主机 (1)
- 搜索引擎seo (3)
- php (24)
- html (6)
- thinkphp (3)
- jquery (10)
- ajax (1)
- css (2)
- javascript (4)
- it (5)
- mysql数据库 (10)
- dedecms (2)
- smarty (2)
- powerdesigner教程 (1)
- Query选项卡 (1)
- ckeditor (1)
- http (1)
- 求助 (1)
- 免费域名 (1)
- 网站挂马检测 (1)
- 软件软件软件 (1)
- WordPress主题制作 (1)
- zencart.me (9)
- zencart购物车修改调用显示购物车图片 (1)
- 修改边栏购物车模版 (1)
- html5 (2)
- seo (5)
- zen cart商品无限分级类别递归 (1)
- zencart教程 (2)
- 在浏览器 favicon 上显示进度 很帅 很酷 (1)
- html5实现太阳系星球演示效果 (1)
- 各地程序员的特征,请对号入座 (1)
- magento的系统需求 (1)
- ubuntu (1)
- 免费空间 (0)
- 哪里有免费发布广告外链 (0)
- 熊猫烧香源代码 (1)
- mysql (0)
- opencart (1)
最新评论
乘法口诀表
header("Content-type:text/html;Charset=utf-8");
for($i=1;$i<10;$i++){
for($k=1;$k<=$i;$k++){
echo " $k * $i =".$k*$i." ";
}echo "<br/>";
}
水仙花数
for($i=100;$i<1000;$i++){
$a=intval($i/100);
$b=intval($i/10);
$c=$i;
if(pow($a,3)+pow($b,3)+pow($c,3)==$i){
echo $i." ";
}
}
a++ ++a 的区别
++$i 没有什么好说的,就是无论什么情况,都先把$i加1 ,然后再干别的
主要说说 $i++;
所有人都知道,$i++ 是先取值,后++,但是大多数人都有一个误解,就是认为这条语句执行完毕之后,$i再加1。其实真实的情况是:变量被加1的时刻发生于$i被++之后的下一次取值
为了理解这句话,我们看几个例子:
1、
1: $i = 2;
2: echo $i++ + $i;
复制代码
结果是5
看第二行,运算中要先得到运算符两边的值之后再运算,通过加1的时刻发生于 $++ 之后的下一次取值可以得知:
a、首先计算运算符左边被加数的值,由于后++的法则是先抛值再加1,所以这时从 $i 取到的值为 2,同时把发生在 $i 身上的后++操作记录下来。这时运算符左边为 2。注意,这时 $i 还未真正的+1
b、接着取运算符右边的加数。他取 $i 的值的时候发现 $i 曾经++过,于是把 $i 加 1 的结果赋给 $i 的同时,返回被+1之后的$i,于是从第二个$i取得的值是被加1之后的值,3。这时运算符右边为3。
c、2+3=5
2、
1: $i = 2;
2: echo $i + $i++;
复制代码
还是第二行。同样要先计算两面,于是便有:
a、首先计算左边,取得$i的值为 2,这个没什么好说的。
b、计算右边,由于后++的特性是先抛值,所以加号运算符右边得到的值也是2
c、2+2,结果是4
最后看一个复杂一点的:
$a=5;
$a+=++$a+$a++;
复制代码
不要被a+=b迷惑,通过 a+=b === a=a+b 转换一下看得更清楚:
$a = ++$a + $a++ +$a;
优先级是这样的:先计算自增减表达式,再根据乘除加减这个基本顺序计算整个表达式
这样我们模拟一下电脑:
a、++$a,直接将$a+1赋值给$a,之后抛出 $a 的值,++$a 这个表达式的位置当前值就成为了 6,现在$a也是6
b、$a++。因为后++是先抛值,所以直接抛 $a 的值 6。这时 $a++ 这个位置的当前值是6。
c、$a。取$a的值的时候发现他曾经有过被++的操作,于是把 $a 加上1赋值给$a,同时抛出值7。这时 $a这个位置的当前值就变成了7
d、$a = 6+6+7,结果是19。
只要记住:当变量$i发生后++的情况时,并不进行+1运算,而是在被++之后仅仅记录++操作,下一次取$i值的时候再+1返回。
一个比较有意思的例子是hightman发出来的:
$a = 1;
$b = &$a;
$b = $a++;
echo "a: $a \nb: $b";
复制代码
你将会发现 $a 和 $b 都是 1!按照上面所说,应该是2才对啊!怎么解释呢?其实解释很简单,就是++操作丢了。听起来不可思议,其实不难理解。这里面跟++已经没有什么关系了,完全是'引用'这个东西在指使。
关于引用的话题,请参加我的另一篇帖子[关于引用的解释]:
http://bbs.chinaunix.net/viewthr ... &extra=page=1
刚才在论坛看到的..题目是这样的:
View Code
1 2
$i = 1; echo "i=".(++$i)+(++$i)+(++$i);
大家可以去运行一下 结果会是7!
这让我们很纳闷 为什么是7呢? 无论如何都出不来7啊..
下面我们改一下这道题目
View Code
1 2
$i = 1; echo (++$i)+(++$i)+(++$i);
这时候在让你回答.我觉得你是可以回答出正确答案的.
没错. 这个答案是9..我想这个我就不必解释了. 2+3+4 所以等于9
那么回到最上面的题.为什么会是7呢?
其实蒙蔽就蒙蔽在那么多自增运算符了. 我们可以去查一下手册运算符的优先级可以看到.
+ – .属于一个优先级 .也就是说PHP计算的时候需要从左向右计算.
所以PHP需要先计算 “i=”.(++$i) 这时候答案是会是 “i=2″ 注意这是字符串.
在PHP中”.“与”+“的区别是相当分明的.”.“就是字符串运算.”+“就是数字运算.
这时候的运算便成了”i=2″+(++$i)+(++$i)了 我们看到 运算中没有了点.所以PHP会去实行数字运算.
但是第一个是字符串.所以PHP会把”i=2″这个字符串强制转换成数字.由于这个字符串的第一个字符不是数字.所以强制转换后的记过就是0。如果这个字符串是”2i=2″.那么转换后就变成2了.
这时候0+3+4 所以就等于7了.
好了 总结下 这道题需要我们注意2点.
“.“与”+“的优先级的问题
字符串强制转换成数字的问题
header("Content-type:text/html;Charset=utf-8");
for($i=1;$i<10;$i++){
for($k=1;$k<=$i;$k++){
echo " $k * $i =".$k*$i." ";
}echo "<br/>";
}
水仙花数
for($i=100;$i<1000;$i++){
$a=intval($i/100);
$b=intval($i/10);
$c=$i;
if(pow($a,3)+pow($b,3)+pow($c,3)==$i){
echo $i." ";
}
}
a++ ++a 的区别
++$i 没有什么好说的,就是无论什么情况,都先把$i加1 ,然后再干别的
主要说说 $i++;
所有人都知道,$i++ 是先取值,后++,但是大多数人都有一个误解,就是认为这条语句执行完毕之后,$i再加1。其实真实的情况是:变量被加1的时刻发生于$i被++之后的下一次取值
为了理解这句话,我们看几个例子:
1、
1: $i = 2;
2: echo $i++ + $i;
复制代码
结果是5
看第二行,运算中要先得到运算符两边的值之后再运算,通过加1的时刻发生于 $++ 之后的下一次取值可以得知:
a、首先计算运算符左边被加数的值,由于后++的法则是先抛值再加1,所以这时从 $i 取到的值为 2,同时把发生在 $i 身上的后++操作记录下来。这时运算符左边为 2。注意,这时 $i 还未真正的+1
b、接着取运算符右边的加数。他取 $i 的值的时候发现 $i 曾经++过,于是把 $i 加 1 的结果赋给 $i 的同时,返回被+1之后的$i,于是从第二个$i取得的值是被加1之后的值,3。这时运算符右边为3。
c、2+3=5
2、
1: $i = 2;
2: echo $i + $i++;
复制代码
还是第二行。同样要先计算两面,于是便有:
a、首先计算左边,取得$i的值为 2,这个没什么好说的。
b、计算右边,由于后++的特性是先抛值,所以加号运算符右边得到的值也是2
c、2+2,结果是4
最后看一个复杂一点的:
$a=5;
$a+=++$a+$a++;
复制代码
不要被a+=b迷惑,通过 a+=b === a=a+b 转换一下看得更清楚:
$a = ++$a + $a++ +$a;
优先级是这样的:先计算自增减表达式,再根据乘除加减这个基本顺序计算整个表达式
这样我们模拟一下电脑:
a、++$a,直接将$a+1赋值给$a,之后抛出 $a 的值,++$a 这个表达式的位置当前值就成为了 6,现在$a也是6
b、$a++。因为后++是先抛值,所以直接抛 $a 的值 6。这时 $a++ 这个位置的当前值是6。
c、$a。取$a的值的时候发现他曾经有过被++的操作,于是把 $a 加上1赋值给$a,同时抛出值7。这时 $a这个位置的当前值就变成了7
d、$a = 6+6+7,结果是19。
只要记住:当变量$i发生后++的情况时,并不进行+1运算,而是在被++之后仅仅记录++操作,下一次取$i值的时候再+1返回。
一个比较有意思的例子是hightman发出来的:
$a = 1;
$b = &$a;
$b = $a++;
echo "a: $a \nb: $b";
复制代码
你将会发现 $a 和 $b 都是 1!按照上面所说,应该是2才对啊!怎么解释呢?其实解释很简单,就是++操作丢了。听起来不可思议,其实不难理解。这里面跟++已经没有什么关系了,完全是'引用'这个东西在指使。
关于引用的话题,请参加我的另一篇帖子[关于引用的解释]:
http://bbs.chinaunix.net/viewthr ... &extra=page=1
刚才在论坛看到的..题目是这样的:
View Code
1 2
$i = 1; echo "i=".(++$i)+(++$i)+(++$i);
大家可以去运行一下 结果会是7!
这让我们很纳闷 为什么是7呢? 无论如何都出不来7啊..
下面我们改一下这道题目
View Code
1 2
$i = 1; echo (++$i)+(++$i)+(++$i);
这时候在让你回答.我觉得你是可以回答出正确答案的.
没错. 这个答案是9..我想这个我就不必解释了. 2+3+4 所以等于9
那么回到最上面的题.为什么会是7呢?
其实蒙蔽就蒙蔽在那么多自增运算符了. 我们可以去查一下手册运算符的优先级可以看到.
+ – .属于一个优先级 .也就是说PHP计算的时候需要从左向右计算.
所以PHP需要先计算 “i=”.(++$i) 这时候答案是会是 “i=2″ 注意这是字符串.
在PHP中”.“与”+“的区别是相当分明的.”.“就是字符串运算.”+“就是数字运算.
这时候的运算便成了”i=2″+(++$i)+(++$i)了 我们看到 运算中没有了点.所以PHP会去实行数字运算.
但是第一个是字符串.所以PHP会把”i=2″这个字符串强制转换成数字.由于这个字符串的第一个字符不是数字.所以强制转换后的记过就是0。如果这个字符串是”2i=2″.那么转换后就变成2了.
这时候0+3+4 所以就等于7了.
好了 总结下 这道题需要我们注意2点.
“.“与”+“的优先级的问题
字符串强制转换成数字的问题
发表评论
-
PHP非诚勿扰-我不是“拍黄片”的!
2013-03-03 14:56 1245非诚勿扰 PHP程序员一场全部灭灯,可怜的,我是PHP程序员 ... -
php输出正立金字塔
2013-01-24 21:05 954php输出正立金字塔 <?php $a = ... -
php永远不懂的面试题目1算出两个文件的相对路径
2012-08-22 10:45 747新浪有个面试题目:写一个php函数算出两个文件的相对路径 ? ... -
http伪静态 htaccess 配置文件详解
2012-08-16 13:57 962.htaccess 配置文件详解 .htaccess文件设置基 ... -
几行 PHP 代码就可以禁用凡人的 HTTP 缓存
2012-08-16 13:53 700header("Content-Type: appl ... -
php ckeditor 使用配置教程
2012-08-16 11:24 1096<script type="text/java ... -
like语句中文有问题 mysql like语句 like的用法 解决方法
2012-08-14 11:17 3572在做MySQL的Like查询是发现中文搜索总是有问题 方法 ... -
php正则表达式常用正则电子邮件手机qq列子
2012-08-03 17:43 1235class Verify{ 003 /** 004 * ... -
mysql_fetch_assoc用法
2012-08-03 11:04 1459$query="SELECT `id` FROM ` ... -
smarty二维数组读取
2012-08-02 10:38 893{foreach item=foo from=$video k ... -
模拟nokie手机访问百度
2012-07-28 11:29 641$tra=new tra(); $my_header2=arr ... -
C:WINDOWS empphp18B.tmp
2012-07-27 10:07 869图片上传 出现 C:WINDOWS empphp18B. ... -
Latin1是什么编码是ISO-8859-1的别名
2012-07-21 11:26 1521atin1 Latin1是ISO-8859-1的别名,有些 ... -
smarty定界符与js冲突的问题
2012-07-20 16:27 1779smarty定界符与js冲突的问题 2010-01-29 11 ... -
php对象错误Call to a member function on a non-object
2012-07-19 17:13 1828php对象错误Call to a member functio ... -
php邮件发送已经测试ok
2012-07-18 10:54 785<?php class smtp { /* Pub ... -
php防盗链 htaccess
2012-07-18 23:09 696下面开始讲解:比如你的图片都在img目录下,那就在该目录下放一 ... -
php$_SERVER[’PHP_SELF’], $_SERVER['REQUEST_URI'], and $_SERVER[’SCRIPT_NAME’]区别
2012-07-18 23:09 981$_SERVER[PHP_SELF], $_SERVER[SC ... -
php global 与 GLOBAL
2012-07-18 23:28 1117php global 与 GLOBAL 标签: 杂谈 须申 ... -
thinkphp ajax效果 自写简单
2012-07-15 09:52 1642js面页 $(document).ready(function ...
相关推荐
html+css九九乘法表 html+css九九乘法表 html+css九九乘法表 html+css九九乘法表 html+css九九乘法表 html+css九九乘法表 html+css九九乘法表 html+css九九乘法表 html+css九九乘法表 html+css九九乘法表 html+css...
java算法题for打印99乘法表
VB 打印九九乘法表 VB 打印九九乘法表
打印九九乘法表java 8Multiplication table.rar 打印九九乘法表java 8Multiplication table.rar
6. 在内部循环中,我们使用printf()函数来打印乘法表中的每个元素,格式为%d*%d=%-2d,其中第一个%d表示列数,第二个%d表示行数,第三个%d表示乘积,%-2d表示左对齐两位数的乘积。 7. 在内部循环结束后,我们使用...
用c++ 实现打印九九乘法表;c++ 实现打印九九乘法表
九九乘法表 打印九九乘法表 c++ 程序打印九九乘法表cmd
C语言打印九九乘法表
循环打印乘法表,初学c++设计
222018321062006 宋行健(冒泡排序,爱因斯坦问题,水仙花数,找因子,算3+33+333,分离数字,乘法表,卖菜,算税收)1
运用C语言程序代码实现打印乘法口诀表的功能
打印九九乘法表.cpp自己些的程序 还不错
jsp javascript打印九九乘法表代码.docx
九九乘法表(输出和打印) 1.C++代码所写; 2.结果可输出到TXT文档中。
自己写的Javascript 打印乘法表 源码 ,也许对大家有用。
好汇编程序设计之打印ASCII表和九九乘法表.doc
② 乘法表的层数 = 表格的行数 = 每行中的列数。如乘法表的第3层,是表格的第3行,且共有3个单元格。 综合案例 九九乘法表 找规律,假设最上面的一层作为第1层,乘法运算的规律: ① 被乘数的取值范围在“1~每行中的...
java 乘法表 java 乘法表java 乘法表java 乘法表java 乘法表java 乘法表java 乘法表java 乘法表java 乘法表
python打印九九乘法表源代码
PHP网页代码,结合网页html写出一个九九乘法表