A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 余丽丽 高级黑马   /  2015-6-6 13:16  /  3853 人查看  /  30 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 余丽丽 于 2015-6-6 22:40 编辑

我自己试着写了以下99乘法表,但是我无意中发现一个问题,不知道是什么原理,刚开始的写法:

#include <stdio.h>

int main(int argc, const char * argv[]) {
    for (int i=1; i<10; i++) {
        for (int j=1; j<i+1; j++) {
            printf("%d*%d=%d\t",i,j,i*j);
        }
        printf("\n");
    }
    return 0;
}
运行结果:



后来改成:
#include <stdio.h>

int main(int argc, const char * argv[]) {
    for (int i=1; i<10; i++) {
        for (int j=1; j<i+1; j++) {
            printf("%d*%d=%d \t",i,j,i*j);
        }
        printf("\n");
    }
    return 0;
}

运行结果:



其实这两种写法只是printf("%d*%d=%d\t",i,j,i*j);改成printf("%d*%d=%d \t",i,j,i*j);而已;
后来我多次测试发现%d*%d=%d\t这部分无论在哪里加空格,对齐效果都是正常的,唯有没有加空格的时候就出现第一种现象;
请问是什么原因?




30 个回复

倒序浏览
我用你的第一种写法
运行出来的也是正确的啊
回复 使用道具 举报
看不出来这两种写法有什么不同.
回复 使用道具 举报
talent123 发表于 2015-6-6 21:36
我用你的第一种写法
运行出来的也是正确的啊

我是6.3.2版本,你呢?
回复 使用道具 举报
第一种也是正确的吧,没看出来哪有问题!
回复 使用道具 举报
这个对齐跟空格没有关系啊.奇葩的问题
回复 使用道具 举报
哦哦哦  好 非常好 很好
回复 使用道具 举报
应该是\t的原因吧 制表符不一定会产生空格的
回复 使用道具 举报
taolove 来自手机 中级黑马 2015-6-7 08:09:56
9#
我运行的没有这个问题!
回复 使用道具 举报
一样的吧
回复 使用道具 举报
小龙女的萝卜 来自手机 中级黑马 2015-6-7 08:11:38
11#
不懂,两个不是看着一样吗?应该没问题吧
回复 使用道具 举报
新手  看不出来啊
回复 使用道具 举报
余丽丽 发表于 2015-6-6 22:40
我是6.3.2版本,你呢?

我是DEV C++
回复 使用道具 举报
我又来围观学习啦
回复 使用道具 举报
可能是xcode的原因吧
回复 使用道具 举报
因为\t的意思就是跳到4k+1的位置输出啊,\t就是从行头开始第5个字符开始输出,\t\t就是第9个
回复 使用道具 举报
/t的原因吧
回复 使用道具 举报
在我这运行没有问题。
回复 使用道具 举报
Emma 发表于 2015-6-9 22:59
因为\t的意思就是跳到4k+1的位置输出啊,\t就是从行头开始第5个字符开始输出,\t\t就是第9个 ...

这个我知道,应该是版本的问题吧,6.3.1.版本运行着没有问题
回复 使用道具 举报
我怎么感觉这没有问题嘞
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马