Domingo 15 de Diciembre de 2024, 23:56
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Que significa esto?...
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Que significa esto?... (Leído 1351 veces)
freax
Nuevo Miembro
Mensajes: 2
Que significa esto?...
«
en:
Domingo 24 de Octubre de 2010, 05:50 »
0
Hola, estaba buscando hacer un reproductor con C.. bueno encontre que SDL te facilita un par de librerias para hacerlo... Pero mi problema no es ese... es dejo el codigo y despues explico mas:
Código: C
#include <stdio.h>
#include<stdlib.h>
#include <smpeg/smpeg.h> // Agregamos la biblioteca smpeg
#include <SDL/SDL.h> // Agregamos la biblioteca SDL
main
(
int
narg
,
char
*
args
[
]
)
{
SMPEG
*
mpeg
;
// Variable donde se guardara el archivo MP3
SMPEG_Info info
;
// Estructura donde se guardará la información del archivo
int
vol
=
0
;
if
(
narg
<
3
)
// Se verifica que se hayan metido los 2 parámetros (archivo y volumen)
{
printf
(
"Usar:n %s <archivo> <vol>nn"
,
args
[
0
]
)
;
exit
(
1
)
;
}
mpeg
=
SMPEG_new
(
args
[
1
]
,
&
info
,
1
)
;
// Se lee el MP3, utilizando la SDL para reproducirlo (tercer parámetro)
SMPEG_enableaudio
(
mpeg
,
1
)
;
// Se activa el audio
sscanf
(
args
[
2
]
,
"%d"
,&
vol
)
;
// Se lee el volumen
if
(
!
vol
)
vol
=
50
;
SMPEG_setvolume
(
mpeg
,
vol
)
;
// Se fija el volumen deseado
SMPEG_play
(
mpeg
)
;
// Se empieza a reproducir
while
(
SMPEG_status
(
mpeg
)
==
SMPEG_PLAYING
)
// Bucle mientras se mantenga reproduciéndose el archivo
{
SMPEG_getinfo
(
mpeg
,&
info
)
;
// Tomamos la información
printf
(
"%lf/%lfn"
,
info.
current_time
,
info.
total_time
)
;
// Imprimimos el avance del MP3
SDL_Delay
(
100
)
;
// Hacemos una pausa de 10 ms, porque de otra forma este proceso ocuparía todo el procesador
system
(
"clear"
)
;
}
SMPEG_delete
(
mpeg
)
;
// Eliminamos el apuntador al MP3
return
0
;
}
pero no entiendo a que se refiere con :
Código: C
if
(
!
vol
)
vol
=
50
;
Ojala me puedan explicar a que se refiere y como se usa eso de if(! X) ... Gracias
Tweet
Epa
Miembro MUY activo
Mensajes: 242
Nacionalidad:
Re: Que significa esto?...
«
Respuesta #1 en:
Domingo 24 de Octubre de 2010, 08:43 »
0
buenas
como supongo que sabras, en una sentencia de control if() se evalua la expresion entre parenesis, si el resultado de la expresion es distinta de 0 se ejecuta la sentencia (simple o compuesta) que esta a continuacion, y si es 0, se salta al final de esa.
el operador ! es el operador de negacion (NOT)
si el operando es distinto de 0 entonces ! devuelve 0, y en caso de ser 0 devuelve algo distinto de 0
hacer (!vol) es equivalente a hacer (vol == 0)
o sea que
if(!vol) vol = 50;
seria, si vol es 0 entonces vol = 50.
como el programa comprueba la cantidad de parametros, esa sentencia supongo que esta por si se pasa un valor no numerico como segundo parametro.
saludos
The sweet smell of a great sorrow lies over the land.
m0skit0
Miembro de PLATA
Mensajes: 2337
Nacionalidad:
Re: Que significa esto?...
«
Respuesta #2 en:
Domingo 24 de Octubre de 2010, 16:18 »
0
Añadiendo a la excelente explicación de Epa: ten en cuenta que para C, 0 es falso y cualquier otro número es verdadero. Por ejemplo:
Código: C
int
i
=
0
;
int
j
=
0
;
scanf
(
&
i
,
"%dn"
)
;
scanf
(
&
j
,
"%dn"
)
;
if
(
i
)
{
printf
(
"i es verdadero para i = %dn"
,
i
)
;
}
else
{
printf
(
"i es falso para i = %dn"
,
i
)
;
}
if
(
i
&&
j
)
{
printf
(
"-i y j- es verdadero para i = %d y j = %dn"
,
i
,
j
)
;
}
else
{
printf
(
"-i y j- es verdadero para i = %d y j = %dn"
,
i
,
j
)
;
}
if
(
i
||
j
)
{
printf
(
"-i o j- es verdadero para i = %d y j = %dn"
,
i
,
j
)
;
}
else
{
printf
(
"-i o j- es falso para i = %d y j = %dn"
,
i
,
j
)
;
}
if
(
!
j
)
{
printf
(
"-no i- es verdadero para i = %dn"
,
i
)
;
}
else
{
printf
(
"-no i- es falso para i = %dn"
,
i
)
;
}
Y así con las operaciones booleanas que quieras probar.
En mi opinión es mucho más limpio y entendible en C no usar los números como booleanos, sino como lo que son: números. Por ejemplo, en vez de
Código: C
if
(
!
x
)
es mejor poner
Código: C
if
(
0
==
x
)
Es mucho más legible y entendible.
Saludos.
Fr33k K0mpu73r
freax
Nuevo Miembro
Mensajes: 2
Re: Que significa esto?...
«
Respuesta #3 en:
Domingo 24 de Octubre de 2010, 17:18 »
0
Ok, saludos y muchas gracias
... Nadie me lo pudo haber explicado mejor que ustedes 2 XD...
Gracias!...
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Que significa esto?...