| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2353 人关注过本帖
标题:printf("abcdef") 所表示的是什么样的数据类型,求大侠解惑
只看楼主 加入收藏
powerfrank
Rank: 2
等 级:论坛游民
帖 子:31
专家分:37
注 册:2018-4-25
结帖率:80%
收藏
 问题点数:0 回复次数:7 
printf("abcdef") 所表示的是什么样的数据类型,求大侠解惑
#include <stdio.h> // 编译预处理命令 标准输入输出头文件
#include <stdlib.h> // 编译预处理命令 标准库头文件

int main(void) // 主函数
{
    int i ; // 定义i为整型变量
   
    i = printf("%d", printf("abcdef")) ; //对整型变量i进行赋值
   
    printf("\n %d \n", i) ; // 以十进制输出i的值

    system("PAUSE"); //从程序中调用“PAUSE”命令

    return 0 ; // 返回0值
}

所得到的结果是

abcdef6
1

书中提到printf("abcdef")在输出abcdef后求得一个值6,不是很懂这句话的意思。是纯属规定?

书中还提到“作为表达式,函数调用的真正意义在于求值。而其他的效果,比如在标准输出设备上输出文字,仅仅是求值以外顺带的副效应而已。”

知道这句话意思,但感觉很难理解,似懂非懂。哪位大侠解解惑

[此贴子已经被作者于2018-11-8 11:27编辑过]

搜索更多相关主题的帖子: printf 什么样 数据类型 命令 输出 
2018-11-08 11:20
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
输出6个字符
2018-11-08 11:39
powerfrank
Rank: 2
等 级:论坛游民
帖 子:31
专家分:37
注 册:2018-4-25
收藏
得分:0 
如果更换一下语句

使用printf("%d \n", putchar('A') );

所得到的结果是A65

这个又该如何理解
2018-11-08 11:44
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
printf:
number of characters transmitted to the output stream or negative value if an output error or an encoding error (for string and character conversion specifiers) occurred
所以,printf("%d", printf("abcdef")) 输出了 abcdef6 有什么不对?!
printf("\n %d \n", i) 输出了 1 有什么不对?!


putchar:
On success, returns the written character.
On failure, returns EOF and sets the error indicator (see ferror()) on stdout.
所以,printf("%d \n", putchar('A') ); 输出了 A65 嘛,'A'的值就是65



2018-11-08 12:20
罗佳申
Rank: 2
等 级:论坛游民
帖 子:19
专家分:10
注 册:2018-10-30
收藏
得分:0 
回复 3楼 powerfrank
输出时先执行putchar(‘A’)即输出A,下一步putchar()函数的返回值是A,但是前面你要求输出的类型是整形,所以就输出了A的ASCLL码
2018-11-09 19:43
kfyniriu
Rank: 6Rank: 6
等 级:侠之大者
威 望:9
帖 子:105
专家分:426
注 册:2018-7-6
收藏
得分:0 
i = printf("%d",printf("abcdef"));
1、printf("abcdef") 输出6个字符  abcdef;
2、printf("%d",printf("abcdef"))  输出结果为6;
3、i = 1;

i = printf("%d\n",printf("abcdef"));
i = 2;

i = printf("%d\n\n",printf("abcdef"));
i = 3;

i = printf("你好");
i = 4
2018-11-09 20:54
zbjzbj
Rank: 12Rank: 12Rank: 12
来 自:郑州
等 级:贵宾
威 望:52
帖 子:633
专家分:3045
注 册:2011-4-22
收藏
得分:0 
在c语言中,执行一个任务,不论是计算还是判案,都叫函数,任务的性质是不加区分的。
派遣任务的时候,会下发一个令牌,令牌上会写明执行什么任务。任务执行结束后,会上交令牌。令牌上会写上任务的执行结果。如果是数学计算,令牌上的执行结果一般是计算结果。如果是逻辑推理,令牌上的结果,一般是推理结果,比如真或者假。如果是打印任务,令牌上的结果可以是总共打印了几个字符,也可以是打印成功或者不成功,用1或0表示。
令牌上附注的这些东西,在C语言中叫函数返回值。
函数的返回值,如果是你自己写的函数,返回什么值你自己定义。如果是系统函数,比如pringtf,scanf,他的返回值同样有,并且已经定义好了,在系统头文件中或文档中可以查到。比如,stdio.h中可以查到。
在执行printf的时候我们一般不要他的返回值,但是他其实是有一个返回值的,最起码的,他需要告诉我们打印执行成功了没有。

[此贴子已经被作者于2018-11-9 21:31编辑过]

2018-11-09 21:27
MeandC
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:8
帖 子:245
专家分:792
注 册:2018-7-14
收藏
得分:0 
printf()的返回值是输出字符的个数。

C果然是有点难啊!
2018-11-09 22:39
快速回复:printf("abcdef") 所表示的是什么样的数据类型,求大侠解惑
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024759 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved