C printf: falsches Format?
Geizhals » Forum » Programmierung » C printf: falsches Format? (8 Beiträge, 291 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
..
Re(2): C printf: falsches Format?
27.04.2009, 17:00:51
Ausgabe für den printf-Test ist: "8 32"

Übrigens habe ich das für andere Datentypen (und Zeiger auch überprüft):

short int: 2 (short int*: 4)
int: 4 (int*: 4)
long int: 4 (long int*: 4)
long long int: 8 (long long int*: 4)

Ich vermute auch, dass es ein Fehler vom C-Copmiler sein könnte, da es bei mir genauso wie in den anderen Kommentaren beschrieben mit g++ keine Probleme gab.

PS: Die Ausgabe von "gcc -S" ist: (hoffentlich langweile ich damit niemanden)

	.file	"test.c"
	.def	___main;	.scl	2;	.type	32;	.endef
	.section .rdata,"dr"
	.align 32
llarr.0:
	.quad	1000
	.quad	2000
	.quad	3000
	.quad	4000
	.align 4
LC0:
	.ascii "llptr:\11[%6lld][%6lld][%6lld][%6lld]\12\0"
	.align 4
LC1:
	.ascii "llarr:\11[%6lld][%6lld][%6lld][%6lld]\12\0"
	.text
.globl _main
	.def	_main;	.scl	2;	.type	32;	.endef
_main:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$56, %esp
	andl	$-16, %esp
	movl	$0, %eax
	addl	$15, %eax
	addl	$15, %eax
	shrl	$4, %eax
	sall	$4, %eax
	movl	%eax, -12(%ebp)
	movl	-12(%ebp), %eax
	call	__alloca
	call	___main
	movl	$4, -4(%ebp)
	movl	-4(%ebp), %eax
	sall	$3, %eax
	movl	%eax, (%esp)
	call	_malloc
	movl	%eax, -8(%ebp)
	cmpl	$0, -8(%ebp)
	je	L2
	movl	-8(%ebp), %eax
	movl	$1000, (%eax)
	movl	$0, 4(%eax)
	movl	-8(%ebp), %eax
	addl	$8, %eax
	movl	$2000, (%eax)
	movl	$0, 4(%eax)
	movl	-8(%ebp), %eax
	addl	$16, %eax
	movl	$3000, (%eax)
	movl	$0, 4(%eax)
	movl	-8(%ebp), %eax
	addl	$24, %eax
	movl	$4000, (%eax)
	movl	$0, 4(%eax)
	movl	-8(%ebp), %eax
	addl	$24, %eax
	movl	4(%eax), %edx
	movl	(%eax), %eax
	movl	%eax, 28(%esp)
	movl	%edx, 32(%esp)
	movl	-8(%ebp), %eax
	addl	$16, %eax
	movl	4(%eax), %edx
	movl	(%eax), %eax
	movl	%eax, 20(%esp)
	movl	%edx, 24(%esp)
	movl	-8(%ebp), %eax
	addl	$8, %eax
	movl	4(%eax), %edx
	movl	(%eax), %eax
	movl	%eax, 12(%esp)
	movl	%edx, 16(%esp)
	movl	-8(%ebp), %eax
	movl	4(%eax), %edx
	movl	(%eax), %eax
	movl	%eax, 4(%esp)
	movl	%edx, 8(%esp)
	movl	$LC0, (%esp)
	call	_printf
	movl	llarr.0+24, %eax
	movl	llarr.0+28, %edx
	movl	%eax, 28(%esp)
	movl	%edx, 32(%esp)
	movl	llarr.0+16, %eax
	movl	llarr.0+20, %edx
	movl	%eax, 20(%esp)
	movl	%edx, 24(%esp)
	movl	llarr.0+8, %eax
	movl	llarr.0+12, %edx
	movl	%eax, 12(%esp)
	movl	%edx, 16(%esp)
	movl	llarr.0, %eax
	movl	llarr.0+4, %edx
	movl	%eax, 4(%esp)
	movl	%edx, 8(%esp)
	movl	$LC1, (%esp)
	call	_printf
L2:
	movl	$0, %eax
	leave
	ret
	.def	_printf;	.scl	3;	.type	32;	.endef
	.def	_malloc;	.scl	3;	.type	32;	.endef



Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung